首页 > 解决方案 > 了解垃圾收集器日志颤动

问题描述

这是我的颤振应用程序日志记录的输出:

Explicit concurrent copying GC freed 25188(844KB) AllocSpace objects, 1(20KB) LOS objects, 2% free, 301MB/309MB, paused 348us total 317.699ms

我想了解:

当我使用颤振的 DevTools 来查找内存时,我看到的数字非常不同:

'<a href="https://i.stack.imgur.com/tNvv0.png" rel="nofollow noreferrer">这里

我添加了“Android”标签,因为我在 Android 10 上运行该应用程序,我相信 IOS 的答案是一样的。

提前致谢

标签: androidflutterdartmemory

解决方案


此日志消息不是来自 Flutter,而是来自 Android 本身。根据您示例中的日志格式,我猜它是从 ART (Android RunTime) 记录的,并且此处详细描述了日志格式的文档:https://developer.android.com/studio/debug/am-logcat? hl=lt#ARTLogMessages

所以回答你的问题:

“LOS”是什么意思?

大对象空间

什么是“2% 免费”?(垃圾收集器设法释放的空间?或剩余的可用 RAM?)。301MB 和 309MB 代表什么?

从链接的文档中:

堆统计

空闲百分比和(活动对象数)/(总堆大小)。

因此,您当前的堆占用 309 MB 内存,其中包含占用 301 MB 的对象。这意味着 2% 的堆可以免费使用。


推荐阅读