我正在研究我的Android应用程序的内存消耗。在app启动后,我立即点击了“Dump Java Heap”,列表中的第一个类是FinalizerReference(java.lang.ref)。它有超过800个实例,占总内存消耗的70%以上。
我理解这是垃圾收集。不太可能是因为内存泄漏,因为它是在app启动后立即捕获而没有切换到另一个视图。除了从共享偏好中读取内容之外,我在启动期间没有进行任何繁重的处理。
Possible Memory leak through FinalizerReference
从这篇文章中,我试图查看FinalizerReference的指示字段,但它似乎超出了我的理解,例如矩阵,画布,渲染节点。这对我来说听起来像UI组件。
这是我的问题:
答案 0 :(得分:0)
一个更好的工具将是有用的,但这仅是因为它应该表明所报告的FinalizerReference的〜33 MB的保留大小不是实际的内存消耗,只是内存对相同少量内存的大量多次计数。探查器。 〜28 kB的浅层大小很重要,但可以忽略不计。我对my own similar question的答复中详细介绍了我使用Memory Profiler进行调查的方式。
您不必担心FinalizerReference,至少不必基于此处显示的内容。您可能需要担心Memory Profiler,因为它报告的此类毫无意义的保留大小。我将其计算视为错误,因此提交了this issue。