gpt4 book ai didi

安卓内存监视器 - "cause GC"

转载 作者:太空狗 更新时间:2023-10-29 13:14:54 27 4
gpt4 key购买 nike

我使用 android 工具 “内存监视器” 来修复内存泄漏。这很有帮助。

但是,我需要澄清一下。

有时在运行该应用程序后,分配的内存为“47MB”。当与应用交互时,它会上下移动。

然后当我点击“cause GC”时,分配的内存下降到“30MB”。

如果我再次单击它,它将变为“17MB”。我的应用以 17MB 开始。

为什么我需要点击“cause GC”两次来回收所有内存?

或者这是出乎意料的,我应该只点击一次?

最佳答案

查看每个循环之前和之后堆上的对象集可能会告诉您更多关于正在发生的事情。这可能是由于 GC 策略决定(例如,分代收集器不扫描所有代),或者可能是由于对象相互引用的方式。

一种可能的情况与终结和 native 指针有关。假设一个位图对象有一个本地组件,并且该本地组件有一个对另一个对象的 JNI 全局引用(可能是一个包含像素数据的 byte[])。第一次 GC 将释放位图。 GC 完成后不久,位图的终结器将运行,释放 JNI 全局引用。但是,byte[] 仍将位于堆上,直到下一次 GC 发现它不再被引用为止。

(这就是 Skia 库在“Ice Cream Sandwich”之前实际处理位图的方式。)

关于安卓内存监视器 - "cause GC",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36020909/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com