谁能给我详细解释一下获得的个人资料adb shell dumpsys meminfo my-app-name
?
结果与如何在 Android 中发现我的应用程序的内存使用情况中提到的一样。:
** MEMINFO in pid 890 [process-name] **
native dalvik other total
size: 10940 7047 N/A 17987
allocated: 8943 5516 N/A 14459
free: 336 1531 N/A 1867
(Pss): 4585 9282 11916 25783
(shared dirty): 2184 3596 916 6696
(priv dirty): 4504 5956 7456 17916
Objects
Views: 149 ViewRoots: 4
AppContexts: 13 Activities: 0
Assets: 4 AssetManagers: 4
Local Binders: 141 Proxy Binders: 158
Death Recipients: 49
OpenSSL Sockets: 0
SQL
heap: 205 dbFiles: 0
numPagers: 0 inactivePageKB: 0
activePageKB: 0
每列(native、dalvik、other、total)是什么意思?尤其是“其他”列是什么(我不知道除了原生和 dalvik 之外是什么)?如果有人可以举一个具体的例子来详细说明这一点,那就太好了。例如,我有一个应用程序 A。A 有自己的对象 obj_private 和自己的本机库 lib_private。此外,A 引用了 Android 框架 obj_shared 的一些对象和 Android 框架 lib_shared 的一些原生库。并且 obj_shared 引用了 Android lib_shared_indirect 的一些原生库。对于这种情况,我可以说那些吗?
- “总大小”等于“obj_private + lib_private + obj_shared + lib_shared + lib_shared_indirect”使用的所有内存。
- “私人脏”等于被“obj_private + lib_private”弄脏的内存
我们想澄清这一点的原因是:与以前的版本相比,我们最新版本的应用程序的运行时内存有一些不寻常的增加。当我使用 dumpsys meminfo 时,我发现“native”和“other”列显着增加。但是新版本的变化只和java有关,“其他”栏目没有说明。我用谷歌搜索了这个并没有找到任何文件。我还尝试阅读 adb 的源代码。但是我发现像我这样的新手很容易迷失在源代码中。所以我在这里发布这个问题,以防有人可以提供帮助。