adb shell 内存参数详解

时间:2024-04-12 07:11:40

摘自https://www.cnblogs.com/zl1991/p/6644998.html,感谢原创作者!!!

1、adb shell  procrank

  PID       Vss            Rss             Pss         Uss           cmdline
32657  2254196K  372752K  238947K  217168K  com.ss.android.article.news
25910  1474016K  269968K  166146K  148592K  com.tencent.mobileqq
25331  1341776K  245164K  139794K  129040K  com.job.android
 1362  2730296K  204944K  134820K  128236K  system_server

从以上打印可以看出,一般来说内存占用大小有如下规律:VSS>= RSS >= PSS >= USS

  • VSS - Virtual Set Size虚拟耗用内存(包含共享库占用的内存)是单个进程全部可访问的地址空间
  • RSS - Resident Set Size实际使用物理内存(包含共享库占用的内存)是单个进程实际占用的内存大小,对于单个共享库,尽管无论多少个进程使用,实际该共享库只会被装入内存一次。
  • PSS - Proportional Set Size实际使用的物理内存(比例分配共享库占用的内存)
  • USS - Unique Set Size进程独自占用的物理内存(不包含共享库占用的内存)USS是一个非常非常有用的数字,因为它揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止,USS就是实际被返还给系统的内存大小。USS是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。怀疑某个程序有内存泄露可以查看这个值是否一直有增加。


2、使用dumpsys meminfo查看内存信息(主要看PSS实际使用的物理内存)

1)adb shell dumpsys meminfo
Applications Memory Usage (in Kilobytes):
Uptime: 131906712 Realtime: 353812965

Total PSS by process:
    276,504K: com.ss.android.article.news (pid 32657 / activities)
    210,447K: com.tencent.mobileqq (pid 25910 / activities)
    155,494K: com.gionee.amisystem (pid 2732 / activities)
    146,896K: com.android.systemui (pid 1718 / activities)
    143,721K: com.job.android (pid 25331 / activities)
    133,167K: system (pid 1362)
    100,832K: com.hupu.games (pid 31886 / activities)
     93,864K: com.tencent.mobileqq:tool (pid 3538)
     87,357K: com.android.settings (pid 25507 / activities)
     84,131K: com.baidu.input_gionee (pid 27694)
     79,149K: com.tencent.mm (pid 31414)
    ************************************************
Total PSS by OOM adjustment:
    233,722K: Native
         41,724K: surfaceflinger (pid 385)
         36,643K: cameraserver (pid 542)
         15,773K: audioserver (pid 540)
          9,159K: vtservice (pid 519)
          7,495K: mediaserver (pid 550)
          5,683K: zygote (pid 539)
          5,648K: teei_daemon (pid 341)
          5,616K: zygote64 (pid 538)
          5,445K: logd (pid 344)
          5,247K: media.codec (pid 520)
          4,926K: mtk_agpsd (pid 533)
          4,812K: mtkmal (pid 383)
          4,565K: media.extractor (pid 549)
          3,624K: rilproxy (pid 1125)
          3,585K: mnld (pid 531)
          3,359K: mtkrild (pid 948)
           
     ************************************
    133,167K: System
        133,167K: system (pid 1362)
    371,643K: Persistent
        146,896K: com.android.systemui (pid 1718 / activities)
         44,705K: com.android.camera (pid 2647)
         42,521K: com.antiy.securityprovider (pid 2495)
        ****************************
    210,447K: Foreground
        210,447K: com.tencent.mobileqq (pid 25910 / activities)
     91,537K: Visible
         31,634K: com.tencent.mobileqq:MSF (pid 1509)
         24,939K: com.tencent.mobileqq:TMAssistantDownloadSDKService (pid 27540)
         20,909K: com.tencent.android.location (pid 2820)
          7,237K: android.ext.services (pid 24105)
          6,818K: com.gionee.gnwakeup (pid 2280)
    115,448K: Perceptible
         84,131K: com.baidu.input_gionee (pid 27694)
         31,317K: com.gionee.secureime (pid 6059)
    201,759K: Home
        155,494K: com.gionee.amisystem (pid 2732 / activities)
         34,807K: com.gionee.amisystem.yourpage (pid 3287)
         11,458K: com.amigo.ai.engine (pid 3407)
    117,498K: A Services
         35,875K: com.job.android:pushcore (pid 1079)
         30,969K: com.gionee.softmanager:remote (pid 2476)
         27,539K: com.ss.android.article.news:push (pid 1292)
         23,115K: com.ss.android.article.news:pushservice (pid 1334)
     13,758K: Previous
         13,758K: com.gionee.providers.weather (pid 23136)
    801,842K: B Services
        276,504K: com.ss.android.article.news (pid 32657 / activities)
        143,721K: com.job.android (pid 25331 / activities)
         59,550K: com.gionee.softmanager (pid 18770 / activities)
         44,166K: com.gionee.systemmanager (pid 27845)
         35,700K: com.hupu.games:monitorService (pid 32250)
         34,504K: com.hupu.games:pushservice (pid 31976)
         33,736K: com.job.android:pushservice (pid 25416)
         32,966K: com.tencent.mm:push (pid 32346)
  ********************************************
    663,301K: Cached
        100,832K: com.hupu.games (pid 31886 / activities)
         93,864K: com.tencent.mobileqq:tool (pid 3538)
         87,357K: com.android.settings (pid 25507 / activities)
         79,149K: com.tencent.mm (pid 31414)
         64,416K: com.android.mms (pid 1453 / activities)
         44,393K: android.process.acore (pid 2471)
         39,333K: com.gionee.amisystem.yourpage:com.cn.xy (pid 31725)
         25,239K: com.tencent.mobileqq:peak (pid 2682)
         23,745K: com.android.calendar (pid 31804)
      *************************

Total PSS by category:
    688,642K: Native
    569,096K: Dalvik
    414,971K: .dex mmap
    257,564K: .art mmap
    223,664K: GL mtrack
    215,430K: .so mmap
    211,283K: Unknown
    137,938K: Dalvik Other
     72,846K: .apk mmap
    *************************

Total RAM: 5,707,832K (status normal)
 Free RAM: 2,591,901K (  663,301K cached pss + 1,348,580K cached kernel +   240,536K free +    46,512K ion cached +   292,972K gpu cached)
 Used RAM: 3,456,977K (2,290,821K used pss + 1,098,256K kernel +    32,768K trace buffer +    35,132K ion disp +         0K cma usage)
 Lost RAM:  -341,046K
   Tuning: 256 (large 512), oom   322,560K, restore limit   107,520K (high-end-gfx)

2)查看某个app的内存信息

adb shell dumpsys meminfo com.tencent.mobileqq

adb shell 内存参数详解

adb shell 内存参数详解


Android程序内存被分为2部分:native和dalvik,dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是 native+dalvik 不能超过最大限制。Android程序内存一般限制在16M,当然也有24M的。

size: 总内存(物理内存、虚拟内存)大小(kb);

Allocated:已分配的内存代销(kb)

Free:表示剩余内存大小(kb)

PrivateDirty:非共享的,又不能放入disk的内存能大小。
从上信息对于分析内存泄露,内存溢出都有极大的作用,从以上信息可以看到该应用程序占用的native和dalvik,当TOTAL 16407 11792 12860 22275 18459 2003超过内存最大限制时会出现OOM错误。