gpt4 book ai didi

java - Android 垃圾收集器行为

转载 作者:行者123 更新时间:2023-11-29 21:03:42 26 4
gpt4 key购买 nike

好吧,我知道有几个类似的问题,但我找不到关于 android 中 GC 的纯事实。

什么时候系统调用GC

Android 中的哪些 GC 算作不需要?

为什么 GC 会跳过位图?

显示我们如何绕过 GC 的代码示例? (对象 = 空?)

GC 对不需要的对象做了什么?

其他重要事实...

最佳答案

** 系统什么时候调用GC? Android 中的哪些 GC 算作不需要? **

在 Android 中至少有 5 种不同的方式调用垃圾收集器,其中一种是常见的,我知道当您查看 logcat 时,您总是会看到这一点

GC_CUNCURRENT

它是一个并发集合,当堆开始填满时触发。

GC_FOR_MALLOC

GC_CURRENT 未能及时完成且堆已满且设备需要分配更多内存时调用,然后触发,直接执行垃圾收集。

GC_EXTERNAL_ALLOC

这仅在 HONEYCOMB 下面的 API 中调用,当您通过调用它的 recycle() 方法释放位图像素数据的内存时触发。

GC_HPROF_DUMP_HEAP

当您从 DDMS 创建一个 hprof 文件用于内存分析 或定位内存泄漏.

GC_IMPLICIT

现在当您通过 System.gc() 调用垃圾收集器本身时会调用它,注意: 避免调用它并且您应该相信 垃圾收集器

为什么 GC 会跳过位图?

那是因为需要隐式调用Bitmap的recycle方法来调用垃圾回收器回收Bitmap的像素数据。 HONEY 及更高版本 中的每个位图都存储在 dalvik 堆 中。

GC 对不需要的对象做了什么?

只要对象在某个地方有引用,它就不会被垃圾回收并导致内存泄漏,您可以使用DDMS检查您的应用程序的内存泄漏。

关于java - Android 垃圾收集器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25195350/

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