gpt4 book ai didi

android - Android Logcat 中的 GC_FOR_MALLOC、GC_EXPLICIT 和其他 GC_* 是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 13:18:38 25 4
gpt4 key购买 nike

如果您查看 Android 日志,您可能会看到很多此类内容。

它们是什么意思,知道这些可能有助于我们更好地分配内存。

例子:

 28470               dalvikvm  D  GC_FOR_MALLOC freed 665 objects / 239992 bytes in 71ms
28470 dalvikvm D GC_FOR_MALLOC freed 673 objects / 240288 bytes in 87ms
21940 dalvikvm D GC_EXPLICIT freed 4802 objects / 185320 bytes in 78ms
28470 dalvikvm D GC_FOR_MALLOC freed 666 objects / 240536 bytes in 63ms

最佳答案

GC_FOR_MALLOC 表示由于堆上没有足够的内存来执行分配而触发了 GC。可能会在创建新对象时触发。

GC_EXPLICIT 表示垃圾收集器已被明确要求收集,而不是由堆中的高水位标记触发。到处都会发生,但最有可能发生在线程被杀死或绑定(bind)通信被取消时。

还有一些其他的:

GC_CONCURRENT当堆达到一定数量的要收集的对象时触发。

GC_EXTERNAL_ALLOC 表示 VM 正在尝试减少用于可收集对象的内存量,以便为更多不可收集对象腾出空间。

更新:在更高版本的 Android 中更改了第一个事件的名称。它现在称为“GC_FOR_ALLOC”。还有一个可用的新事件,尽管在现代手机中非常罕见:GC_BEFORE_OOM 表示系统运行时内存非常低,并且执行了最终 GC,以避免调用低内存 killer 。

关于android - Android Logcat 中的 GC_FOR_MALLOC、GC_EXPLICIT 和其他 GC_* 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4976566/

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