使用7mb的RAM的Android FinalizerReference

我知道有2-3个话题, FinalizerReference存在问题,但是还是没有解释清楚。 我有一个关于这个class的问题,它是如何工作的。

无论我在应用程序中做什么, FinalizerReference总是保持5-10个RAM ,我的问题是:

这是一个正常的行为,我不必担心?

据我所知,Java对象被释放,但是“指针”停留在内存中,并且用下一个GC(以及用GC清除的普通对象,而不参考它)来清理它们。

对我来说,这是有点错误,因为如果我有〜64 MB的RAM用于我的应用程序和10MB浪费 – 必须有一个问题。

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

以下是AppHeap的截图: 在这里输入图像说明

这是从它的实例屏幕:

在这里输入图像说明

这里是我的记忆监视器(它保持在这种forms30分钟):

在这里输入图像说明

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

编辑

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

Solutions Collecting From Web of "使用7mb的RAM的Android FinalizerReference"

我只有在Nexus 5上遇到与FinalizerReference相同的问题。

这是Android Studio的堆转储的屏幕截图。 在这里输入图像说明

经过一番研究,我发现了这个评论,说这可能是System引起的。

另外,我使用了Eclipse的内存分析工具(MAT) ,它certificate了如此多的FinalizerReference对象属于System。

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

在这里输入图像说明

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

试过:

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

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

只要忽略这个问题,并继续写代码。