Android Memory Debug 内存调试

发布于 2024-06-04 00:53:55 字数 876 浏览 13 评论 0

在 Android 开发中经常看到 LogCat 日志上打印系统回收的东西,但是却又不知道什么意思,这篇博客就来讲讲这些调试信息的含义。

一般 Java 虚拟机要求支持 verbosegc 选项,输出详细的垃圾收集调试信息。dalvik 虚拟机很安静的接受 verbosegc 选项,然后什么都不做。dalvik 虚拟机使用自己的一套 LOG 机制来输出调试信息。

如果在 Linux 或者 Mac 下运行 adb logcat 命令,可以看到如下的输出:

D/dalvikvm(5809): GC_CONCURRENT freed 319K, 41% free 3465K/8453K, external 4703K/5261K, paused 7ms+18ms

其中 D/dalvikvm 表示由 dalvikvm 输出的调试信息,括号后的数字代表 dalvikvm 所在进程的 pid。

GC_CONCURRENT 表示触发垃圾收集的原因,有以下几种:

  • GC_MALLOC, 内存分配失败时触发
  • GC_CONCURRENT,当分配的对象大小超过 384K 时触发
  • GC_EXPLICIT,对垃圾收集的显式调用(System.gc)
  • GC_EXTERNAL_ALLOC,外部内存分配失败时触发

freed 319K:表示本次垃圾收集释放了 199K 的内存

41% free 3465K/8453K:其中 8453K 表示当前内存总量,3465K 表示可用内存,41%表示可用内存占总内存的比例

external 4703K/5261K:表示可用外部内存/外部内存总量

paused 7ms+18ms:garbage collection 总共花费了 (7 + 18) ms (启动花费时间+结束花费时间)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

浅忆流年

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文