我发现内部类中内存泄漏的概念相当难以掌握。我找到的大多数答案都是在 java 的上下文中,这进一步让像我这样的初学者感到困惑。
此处类似问题的大多数答案都重定向到此:When Exactly is it leak safe to use anonymous inner classes?
同样,对于 OOP 新手来说,这里的答案很难理解。
我的问题:
为什么内部类会发生内存泄漏?
使用内部类时,最常见的内存泄漏有哪些 会发生吗?
对于可能遇到的内存泄漏有哪些补救措施 经常吗?
最佳答案
Why do memory leaks occur with the inner classes?
因为内部类维护了对外部类的引用。
如果内部类实际上并不需要该引用(这对于匿名类来说很常见),并且外部类无法访问,但由于该引用,它仍然不可被垃圾回收。
这被认为是“泄漏”,即只要维护对内部类的引用,应该释放的内存就没有被释放。
When using inner classes, what are the most common memory leaks that can occur?
查看第一个问题的答案。
What are remedies to memory leaks that one can come across frequently?
使用静态嵌套类而不是匿名类、本地类和内部类。顶级类(class)当然也是一种选择。
当然,只有当内部类的生命周期超过外部类的生命周期时才需要这样做。
关于java - 如何查找并修复 Java 嵌套类中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39965070/