我知道有 2-3 个主题与此有关,FinalizerReference
存在问题,但仍然没有很好地解释。我有一个关于这个类以及它的工作原理的问题。
无论我在我的应用程序中做什么,FinalizerReference
总是为自己保留 5-10 个 RAM
,我的问题是:
这是我不必担心的正常行为吗?
据我所知,Java 对象已被释放,但“指针”保留在内存中,并且它们会在下一次 GC 中被清理(以及使用 GC 清理的普通对象,不对其进行引用)。
对我来说,这有点不对劲,因为如果我有大约 64 MB 的 RAM 可用于我的应用程序并且浪费了 10 MB - 肯定有问题。
我检查了所有内容,删除了所有泄漏,目前我的应用程序仅停留在 18~mb RAM(7 RAM - 图形,2 RAM - 对象)。其余的 - FinalizerReference
;/
这是它的实例的屏幕:
这是我的内存监视器(它会保持这种形式 30 分钟):
此外,在“实例”面板中,有 50 个条目,其中约 5 个来 self 的代码和我使用的库。其余部分来自 Android - InputManagers、Parcels、Proxies 等。
编辑
这发生在 Galaxy S5 上。 在 Android 模拟器上,我从 FinalizerReference 获得 ~2MB
最佳答案
我没有解决问题,但有人建议我应该检查一个空项目。
尝试过:
- Android Studio Windows x32
- Android Studio Windows x64
- IntelliJIDEA x32
- IntelliJIDEA x64
所有这些都会导致 FinalizerReference
在空项目和非空项目上为自己保留 5-10 mb
的 RAM
。
忽略这个问题,继续写代码。
关于java - 使用 7mb RAM 的 Android FinalizerReference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40410777/