gpt4 book ai didi

java - 我想知道为什么 FinalizerReference 在我的应用程序中消耗这么多内存

转载 作者:太空狗 更新时间:2023-10-29 13:46:50 26 4
gpt4 key购买 nike

heap data

我的应用程序不能在 android 4.x 上运行,所以我只是分析我的应用程序的堆数据,我发现 java.lang.FinalizerReference 保留了这么多内存。任何人都可以解释它吗?任何想法将不胜感激。

最佳答案

它没有,真的。

我也遇到这个问题,我创建了a separate question并在找到你之前回答。我想我实际上找到了它的根源。

tldr:在分析时像处理任何其他类一样处理 FinalizerReference(如 Memory Profiler 所做的那样)会导致在计算保留大小时重复计算相同的内存。因此,目前您可以(几乎总是)将 Memory Profiler 报告的 FinalizerReference 类的 Retained Size 视为无意义。

作为Holger在评论中指出,通常只有类的 48 kB 浅尺寸(在您的情况下)很重要。然而,报告的大约 63 MB 的 Retained Size 甚至不包括引用对象的内存,只包括递归计算的其他 FinalizerReference 实例。 ( unconvinced? read more )

但是那些引用对象真的很重要,尤其是那些在被垃圾收集之前只是等待 finalize() 的对象。因此,Memory Profiler 应该 显示它们,正如 Holger 所假设的那样,因为大量的它们表明一个迫在眉睫的问题。

我将此视为 Android Studio 内存分析器中的错误,并已提交 this issue .

关于java - 我想知道为什么 FinalizerReference 在我的应用程序中消耗这么多内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52135012/

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