了解Flutter垃圾回收器日志

3

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

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

我想了解以下内容:
  • "LOS" 的含义是什么?
  • "2% free" 是什么?(垃圾回收器成功释放的空间还是剩余可用RAM?)
  • 301MB 和 309MB 分别代表什么?
由于我正在使用Flutter DevTools查看内存,所以看到的数字非常不同:

here

我添加了“Android”标签,因为我在Android 10上运行应用程序,并且我认为答案对于iOS也是相同的。
提前感谢您。

1
这个日志似乎不是来自Flutter而是Android。我找到了这篇文章,它似乎更详细地解释了日志行:https://dzone.com/articles/understanding-android-gc-logs - julemand101
谢谢,这确实回答了我的问题! - Tom3652
太好了,我已经给出了一个你可以接受的答案。 - julemand101
1个回答

2
这些日志消息不是来自Flutter,而是来自Android本身。根据您示例中的日志格式,我猜测它是从ART(Android运行时)记录的,其中日志格式在此文档中详细描述:https://developer.android.com/studio/debug/am-logcat?hl=lt#ARTLogMessages 因此,回答您的问题:
“LOS”是什么意思?
Large Object Space “2% free”是什么?(垃圾收集器成功释放的空间还是剩余的可用RAM?)。301MB和309MB代表什么?
根据链接的文档:
堆统计信息
百分比空闲和(活动对象数)/(总堆大小)。
因此,您当前的堆占用309 MB内存,其中包含301 MB的对象。这意味着堆的2%可供使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接