在安卓系统中询问关于"dumpsys meminfo"的问题

5
当我在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中发现应用程序的内存使用情况? 页面,但仍有几个问题:

  • 为什么本地Pss、共享脏私人脏非常小?
  • 堆大小应该比Pss小吗?
  • 未知是什么意思?看起来很大。
  • 如果想知道我的应用程序使用了多少内存,应该使用哪些数据?总Pss吗?但它不包括本地Pss,而本地Pss几乎为零?
1个回答

2
请参考问题如何在Android中发现应用程序的内存使用情况?。我还希望您参考详细的VSS、RSS、PSS、USS链接。对于特定应用程序来说,最合适的数据是USS(唯一集合大小),如下所述:

USS是进程的总私有内存,即完全属于该进程的内存。USS是一个非常有用的数字,因为它表示运行特定进程的真正增量成本。当进程被杀死时,USS是实际返回给系统的总内存。USS是最初怀疑进程中存在内存泄漏时观察的最佳数字。

您可以通过adb shell procrank | grep <your.package.name>获取USS。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接