当我在 android 4.2 上运行“adb shell dumpsys meminfo”时,我得到的结果如下
Shared Private Heap Heap Heap
Pss Dirty Dirty Size Alloc Free
------ ------ ------ ------ ------ ------
Native 28 8 28 16404 12256 3663
Dalvik 14062 10060 13736 20032 15254 4778
Cursor 0 0 0
Ashmem 0 0 0
Other dev 4762 9556 0
.so mmap 11699 1824 1500
.jar mmap 0 0 0
.apk mmap 368 0 0
.ttf mmap 811 0 0
.dex mmap 3736 0 0
Other mmap 114 16 32
Unknown 12064 544 12052
TOTAL 47644 22008 27348 36436 27510 8441
我已阅读以下页面如何发现 Android 中应用程序的内存使用情况? https://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android/,但还有几个问题:
- 为啥原生的Pss、shared dirty、private dirty都很小呢?
- 堆大小应该小于Pss?
- 未知是什么意思?看起来很大。
- 如果我想知道我的应用程序使用了多少内存,我应该使用哪些数据?总Pss?但它不包括几乎为零的原生 Pss?
请参考问题如何发现 Android 中应用程序的内存使用情况? https://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android。
我也想让你参考一下详细 VSS,RSS,PSS,USS http://mysuperbaby.iteye.com/blog/1390151关联。用于特定应用程序的最合适的数据是
USS(唯一集大小)为
USS 是进程的总私有内存,即该进程完全唯一的内存。 USS 是一个非常有用的数字,因为它表明运行特定进程的真实增量成本。当一个进程被杀死时,USS是实际返回给系统的总内存。当最初怀疑进程中存在内存泄漏时,USS 是最好观察的数字。
你可以通过adb shell procrank | grep <your.package.name>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)