为什么静态内部类可以减少内存泄漏?

myo*_*dpa 3 memory-leaks

我正在阅读高效的 Android 线程,其中说

最好使用静态内部类,而不是使用带有外部类引用的嵌套类,因为它们仅引用全局类对象而不引用实例对象。这只是减轻了泄漏,因为在线程执行时,静态内部类对其他实例对象的所有显式引用仍然有效。

但我不清楚为什么它会减轻泄漏。如果静态内部类对其他实例对象的所有显式引用都处于活动状态,那么这不是与上述解释相反的内存泄漏原因吗?

小智 7

非静态内部类会泄漏内存,因为它隐式引用了其外部类。假设您有一个实例持有对内部类对象的引用,这意味着它是活动的,并且该内部类对象持有对其外部类对象的隐式引用,这也意味着外部类对象是活动的,但它不能用于事实。所以对于外部类对象,由于来自内部类的引用,不会被垃圾回收删除,导致内存泄漏。

您可以从此答案中找到更多详细信息:When certain is itleasure safe to use (anonymous) inside class?