了解 dumpsys meminfo

Posted

技术标签:

【中文标题】了解 dumpsys meminfo【英文标题】:understanding dumpsys meminfo 【发布时间】:2012-07-27 18:52:12 【问题描述】:

我有两个问题。

    dumpsys meminfo 中,有一个号码叫Local Binders。这是什么意思?它只是一种本机指针吗?在什么情况下这个数字会增加?我观察到当这个数字增加到大约 1000 时,应用程序甚至模拟器都会崩溃。

    在内存使用部分,共有三列:nativedalviktotaltotal=native+dalvik。那么为什么将这两部分(nativedalvik)加在一起呢? dalvik heap 不是指的Java堆,应该是Unix进程数据段的一部分吗?

【问题讨论】:

【参考方案1】:
    我认为本地活页夹是活页夹服务, 例如框架将创建一个ApplicationThread,它是一个binder服务,当进程从zygote分叉时。

进程每创建一个binder服务,数量就会增加。

更重要的是,binder 需要在内核空间中分配的 binder 缓冲区,而 内核空间对系统来说是非常宝贵的,所以过多的 binder service 可能会造成一些麻烦。

    本机堆供 c/c++ 使用,当您调用 malloc, new 时。 dalvik heap 是供 java 使用的,它由 dalvik(GC ?) vm 管理,当你调用 new 来创建 java 对象时

【讨论】:

【参考方案2】:

dumpsys 的输出最好通过阅读其源代码来理解。

【讨论】:

以上是关于了解 dumpsys meminfo的主要内容,如果未能解决你的问题,请参考以下文章

Android 进阶——Framework 核心之dumpsys命令浅析

使用Adb shell dumpsys检测Android的Activity任务栈

Android 在命令行使用 adb shell dumpsys 相关命令

Android中AM、PM、dumpsys命令使用总结

dumpsys命令用法

dumpsys命令用法