我发现内部类中的内存泄漏概念相当难以理解。我发现的大多数答案都在java的上下文中,这进一步混淆了像我这样的初学者。

这里对类似问题的大多数答案都重定向到此:When Exactly is it leak safe to use anonymous inner classes?

同样,对于刚接触OOP的人来说,这里的答案很难传达。

我的问题:


为什么内部类会发生内存泄漏?
使用内部类时,最常见的内存泄漏是什么
会发生吗?
什么是可以遇到的内存泄漏的补救方法
经常?

最佳答案

为什么内部类会发生内存泄漏?


因为内部类维护对外部类的引用。

如果内部类实际上不需要该引用(匿名类通常很安静),而外部类否则无法访问,则由于该引用,它还是不可垃圾回收的。

这被认为是“泄漏”,即只要保持对内部类的引用,就不会释放应释放的内存。


  使用内部类时,最常见的内存泄漏是什么?


请参阅第一个问题的答案。


  什么是可以经常遇到的内存泄漏的补救方法?


使用静态嵌套类,而不是匿名,本地和内部类。当然也可以选择顶级类。

当然,这仅在内部类的寿命超过外部类的寿命时才需要。

09-30 14:43
查看更多