android - 了解垃圾收集器日志颤动
问题描述
这是我的颤振应用程序日志记录的输出:
Explicit concurrent copying GC freed 25188(844KB) AllocSpace objects, 1(20KB) LOS objects, 2% free, 301MB/309MB, paused 348us total 317.699ms
我想了解:
- “LOS”是什么意思?
- 什么是“2% 免费”?(垃圾收集器设法释放的空间?或剩余的可用 RAM?)
- 301MB 和 309MB 代表什么?
当我使用颤振的 DevTools 来查找内存时,我看到的数字非常不同:
'<a href="https://i.stack.imgur.com/tNvv0.png" rel="nofollow noreferrer">
我添加了“Android”标签,因为我在 Android 10 上运行该应用程序,我相信 IOS 的答案是一样的。
提前致谢
解决方案
此日志消息不是来自 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% 的堆可以免费使用。
推荐阅读
- d3.js - 颠倒 d3.zoom 缩放和平移的顺序
- typescript - 为什么 TypeScript 抱怨数组长度?
- prometheus - Prometheus 实例标签与容器
- javascript - 为什么模型表单没有在锚标签上打开?
- javascript - Calculate corners of rotated rectangle in container
- python - 烧瓶邮件api,没有正确获取请求变量
- azure-virtual-machine - What doesn't the disk size in the portal match what I see in my VM File Explorer?
- powershell - 从发布管道运行 linqpad 脚本的最佳方式是什么?
- javascript - 正确使用 setTimeout
- javascript - 如何使以 AB- 开头的单词可点击?