当我在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

我已经阅读了How do I discover memory usage of my application in Android?的页面,但仍然有几个问题:
为什么本地pss,共享脏私有脏很小?
堆大小应该小于pss?
未知意味着什么?看起来很大。
如果我想知道我的应用使用了多少内存,我应该使用哪些数据?总PSS?但它不包括原始的pss,也就是nealy零?

最佳答案

请参考问题How do I discover memory usage of my application in Android?
我也希望您参考Detail VSS,RSS,PSS,USS链接。对于特定的应用程序,最合适的数据是
USS(唯一设置大小)为
uss是进程的总私有内存,即该进程完全唯一的内存。uss是一个非常有用的数字,因为它表示运行特定进程的真正增量成本。当进程被终止时,uss是实际返回到系统的总内存。当最初怀疑进程中存在内存泄漏时,uss是最好的监视数字。
你可以通过adb shell procrank | grep <your.package.name>

08-07 22:36