Android FinalizerReference 使用 7mb 的 RAM

我知道有2-3个关于这个的话题,有问题,但它仍然没有得到很好的解释。我有一个关于这门课的问题,以及其中的东西是如何工作的。FinalizerReference

无论我在应用程序中做什么,都要始终为自己保留5-10,我的问题是:FinalizerReferenceRAM

这是一种我不必担心的正常行为吗?

据我所知,Java对象被释放,但“指针”保留在内存中,它们被下一个GC清理(以及用GC清理的普通对象,没有引用它)。

对我来说,这有点错误,因为如果我有大约64 MB的RAM用于我的应用程序,并且浪费了10mb - 一定有问题。

我检查了所有,删除了我的所有泄漏,目前我的应用程序只停留在18〜mb RAM(7 RAM - 图形,2 RAM - 对象)。其余的 -FinalizerReference ;/

这是AppHeap的屏幕截图:enter image description here

这是来自其实例的屏幕:

enter image description here

这是我的内存监视器(它以这种形式保持30分钟):

enter image description here

此外,在“实例”面板中,有50个条目,包括我使用的代码和库中的约5个条目。其余的来自Android - InputManagers,Parcels,Proxyies等。

编辑

这发生在Galaxy S5上。在Android模拟器上,我从FinalizerReference获得~2MB


答案 1

我没有解决问题,但得到了一个建议,我应该检查一个空项目。

尝试使用:

  • Android Studio Windows x32
  • Android Studio Windows x64
  • IntelliJIDEA x32
  • IntelliJIDEA x64

所有这些都导致 在空和非空项目上为自己保留。FinalizerReference5-10 mbRAM

只需忽略问题并继续编写代码即可。


答案 2

我遇到了同样的问题,只在Nexus 5上。FinalizerReference

这是来自Android Studio的堆转储的屏幕截图。enter image description here

经过一些研究,我发现了这个评论,它说这可能是由系统引起的。

此外,我还使用了Eclipse的内存分析工具(MAT),它证明了许多对象属于System。FinalizerReference

而且,它并没有像Android Studio的堆转储那样占用那么多的内存。

enter image description here


推荐