- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的应用程序不能在 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/
我的应用程序不能在 android 4.x 上运行,所以我只是分析我的应用程序的堆数据,我发现 java.lang.FinalizerReference 保留了这么多内存。任何人都可以解释它吗?任何想
我有一个小的 android 应用程序,我尝试查找内存泄漏,所以我点击了“Dump Java Heap”,列表中的第一个类是 FinalizerReference (java.lang.ref)。它有
当启动 com.android.gallery3d 并按返回键大约 2000 次时,我得到了 java.lang.OutOfMemoryError 异常。android 4.0.4中com.andro
我知道有 2-3 个主题与此有关,FinalizerReference 存在问题,但仍然没有很好地解释。我有一个关于这个类以及它的工作原理的问题。 无论我在我的应用程序中做什么,FinalizerRe
我是一名优秀的程序员,十分优秀!