gpt4 book ai didi

memory-leaks - 为什么静态内部类可以减轻内存泄漏?

转载 作者:行者123 更新时间:2023-12-05 03:06:32 29 4
gpt4 key购买 nike

我正在阅读 Efficient Android Threading,上面写着

Instead of using nested classes with outer class references, it is preferred to use static inner classes because they reference only the global class object and not the instance object. This just mitigates the leak, because all explicit references to other instance objects from the static inner class are still live while the thread executes.

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

最佳答案

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

您可以从这个答案中找到更多详细信息:When exactly is it leak safe to use (anonymous) inner classes?

关于memory-leaks - 为什么静态内部类可以减轻内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49154634/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com