应用启动后,70%的内存被FinalizerReference占用

时间:2017-03-24 16:28:17

标签: android

我正在研究我的Android应用程序的内存消耗。在app启动后,我立即点击了“Dump Java Heap”,列表中的第一个类是FinalizerReference(java.lang.ref)。它有超过800个实例,占总内存消耗的70%以上。

我理解这是垃圾收集。不太可能是因为内存泄漏,因为它是在app启动后立即捕获而没有切换到另一个视图。除了从共享偏好中读取内容之外,我在启动期间没有进行任何繁重的处理。

Possible Memory leak through FinalizerReference

从这篇文章中,我试图查看FinalizerReference的指示字段,但它似乎超出了我的理解,例如矩阵,画布,渲染节点。这对我来说听起来像UI组件。

这是我的问题:

  1. 我是否有任何方法/工具可以进一步调试内存消耗的根本原因。
  2. 这是我需要担心的事情,或者它只是android内存管理的正常行为。
  3. enter image description here

1 个答案:

答案 0 :(得分:0)

  1. 一个更好的工具将是有用的,但这仅是因为它应该表明所报告的FinalizerReference的〜33 MB的保留大小不是实际的内存消耗,只是内存对相同少量内存的大量多次计数。探查器。 〜28 kB的浅层大小很重要,但可以忽略不计。我对my own similar question的答复中详细介绍了我使用Memory Profiler进行调查的方式。

  2. 您不必担心FinalizerReference,至少不必基于此处显示的内容。您可能需要担心Memory Profiler,因为它报告的此类毫无意义的保留大小。我将其计算视为错误,因此提交了this issue