有人能给我详细解释一下通过adb shell dumpsys meminfo my-app-name
获取的profile是什么吗?
结果就像在如何在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)的含义是什么?特别是“other”列是什么意思(除了native和dalvik之外我无法理解它是什么)?如果能给出一个具体的例子来阐述这个问题就更好了。例如,我有一个名为A的应用程序。A有自己的对象obj_private和自己的本地库lib_private。除此之外,A参考了Android框架的一些对象obj_shared和Android框架的一些本地库lib_shared。而obj_shared则参考了Android lib_shared_indirect的一些本地库。对于这种情况,我可以这样说吗?1. “总大小”等于“obj_private + lib_private + obj_shared + lib_shared + lib_shared_indirect”所使用的所有内存。 2. “私有脏数据”等于“obj_private + lib_private”脏掉的内存。
我们想要澄清这个问题的原因是:我们最新版本的应用程序与以前版本相比存在一些异常的运行时内存增加。当我使用dumpsys meminfo命令时,发现“native”和“other”列大幅增加。但新版本的更改只涉及Java,并没有解释“other”列的变化。我在谷歌上搜索了一下,没有找到相关文档。我还尝试阅读adb的源代码,但像我这样的初学者很容易在源代码中迷失方向。因此,我在这里发布这个问题,希望有人能够帮助解答。