分析命令
1.内存的指标
Item全称描述类型
USS Unique Set Size进程独占的内存(不包含共享库占用的内存)物理内存
PSS Proportional Set Size进程独占 + 比例分配共享库占用的内存物理内存
RSS Resident Set Size进程独占 + 共享库占用的内存物理内存
VSS Virtual Set SizeRSS + 未分配的物理内存虚拟内存
2.内存分析工具
2.1 proc/meminfo
查看详细的内存信息
cat proc/meminfo
MemTotal: 1002660 kB
MemFree: 39140 kB
MemAvailable: 609280 kB
Buffers: 20668 kB
Cached: 548972 kB
SwapCached: 856 kB
Active: 453564 kB
Inactive: 314604 kB
Active(anon): 83800 kB
Inactive(anon): 118824 kB
Active(file): 369764 kB
Inactive(file): 195780 kB
Unevictable: 2712 kB
Mlocked: 1044 kB
HighTotal: 504636 kB
HighFree: 2256 kB
LowTotal: 498024 kB
LowFree: 36884 kB
SwapTotal: 751988 kB
SwapFree: 738184 kB
Dirty: 68 kB
Writeback: 0 kB
AnonPages: 200976 kB
Mapped: 259604 kB
Shmem: 2428 kB
Slab: 45996 kB
SReclaimable: 19152 kB
SUnreclaim: 26844 kB
KernelStack: 7656 kB
PageTables: 15224 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1253316 kB
Committed_AS: 16471656 kB
VmallocTotal: 499712 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
MemTotal:表示系统内存总数 // 1002660 kB
系统从上电启动到引导完成,内核中需要保留部分内存,剩下的内存总数即为 MemTotal,这个值在系统运行期间保持不变。
MemFree:空闲内存总数// 39140 kB
表示系统中尚未使用的内存, MemTotal - MemFree 表示已经用掉的内存。
MemAvailable:可用内存 //609280 kB
应用程序可用内存数,系统中存在一些已经被使用但是可以回收的内存,比如Buffers、Cached和slab的部分,所以 MemFree 不能代表全部可用的内存,加上可以回收的内存才是系统可用内存的总和。// 39140 kB + 20668 kB + 548972 kB = 608780
比如 MemAvailable ≈ MemFree + Buffers + Cached,这里是内核计算出来的估值。MemFree表示系统层面,MemAvailable泛指应用层面。
Buffers:缓冲区内存
Cached:缓存区内存
2.2 free
# freetotal used free shared buffersMem: 4033196032 1199968256 2833227776 119869440 56078336-/+ buffers/cache: 1143889920 2889306112Swap: 2016256000 0 2016256000# free -mtotal used free shared buffersMem: 3846 1144 2701 114 53-/+ buffers/cache: 1091 2755Swap: 1922 0 1922
轻量级的内存查看工具,内容来源于proc/meminfo.
Mem.total = Mem.used + Mem.free,即 3846 = 1144 + 2701;
Mem.used - Mem.buffers = buffers.used,即 1144 - 53 = 1091;
Mem.free + Mem.buffers = buffers.free, 即 2701 + 53 = 2755;
2.3 dumpsys meminfo
输出的结果大致按照4个部分排序,分别Total PSS by process、Total PSS by OOM adjustment、Total PSS by category 和 Total RAM.
Total PSS by process:以进程的PSS从大到小排序
Total PSS by OOM adjustment:分别显示每个类型进程的情况,Native/System/Persistent/Foreground/Visible/Perceptible/A Services/Home/B Services/Cached.
Total PSS by category:以Dalvik/Native/.art mmap/.dex map等划分的各类进程的总PSS情况
Total:显示总内存、可用内存、已使用内存、其他内存.
tb8765ap1_bsp_1g:/ # dumpsys meminfo
Applications Memory Usage (in Kilobytes):
Uptime: 53063974 Realtime: 53063974
Total PSS by process:
99,553K: com.baidu.launcher (pid 1628 / activities)
46,172K: system (pid 631)
36,404K: com.baidu.launcher:remote (pid 423)
30,586K: com.baidu.input (pid 1835)
22,029K: com.baidu.duer.thirdapp (pid 1446)
18,381K: logd (pid 260)
14,762K: camerahalserver (pid 361)
13,589K: surfaceflinger (pid 305)
10,911K: android.process.acore (pid 1549)
10,244K: android.process.media (pid 1498)
10,147K: zygote (pid 288)
9,986K: com.baidu.duer.thirdapp:ota (pid 1981)
8,502K: com.baidu.duer.ota:ota (pid 2062)
7,983K: cameraserver (pid 344)
7,426K: visionmanagerserver (pid 387)
7,246K: android.hardware.audio@2.0-service-mediatek (pid 291)
6,850K: com.baidu.duer.ota (pid 1424)
6,727K: media.codec (pid 359)
6,507K: mediaserver (pid 351)
6,134K: android.hardware.graphics.composer@2.1-service (pid 298)
6,035K: com.baidu.duershow.statistic (pid 1416)
6,018K: com.mediatek.engineermode (pid 1766)
5,768K: merged_hal_service (pid 300)
4,809K: com.baidu.oases (pid 2448)
4,723K: com.baidu.mesh.provisioner (pid 1477)
4,706K: audioserver (pid 342)
4,620K: vulture.watchdog (pid 1461)
4,203K: com.mediatek.bluetooth.dtt (pid 2477)
4,060K: com.mediatek.providers.drm (pid 2507)
3,543K: com.mediatek.thermalmanager (pid 2556)
3,540K: wpa_supplicant (pid 2712)
3,416K: media.extractor (pid 350)
3,349K: drmserver (pid 345)
2,894K: /init (pid 1)
1,873K: android.hardware.wifi@1.0-service (pid 299)
1,702K: android.hardware.drm@1.0-service.widevine (pid 296)
1,688K: mnld (pid 340)
1,622K: vold (pid 277)
1,543K: netd (pid 287)
1,503K: lmkd (pid 304)
1,335K: mtk_advcamserver (pid 355)
1,324K: keystore (pid 348)
1,225K: vendor.mediatek.hardware.pq@2.0-service (pid 371)
1,190K: installd (pid 347)
1,180K: ueventd (pid 214)
1,160K: hwservicemanager (pid 262)
1,124K: wificond (pid 358)
1,113K: android.hardware.sensors@1.0-service-mediatek (pid 360)
1,079K: adbd (pid 1346)
1,056K: android.hardware.keymaster@3.0-service (pid 276)
1,037K: ged_srv (pid 1361)
918K: mediadrmserver (pid 349)
877K: gatekeeperd (pid 373)
873K: vendor.mediatek.hardware.dfps@1.0-service (pid 301)
851K: thermalserviced (pid 306)
802K: storaged (pid 357)
780K: android.hardware.broadcastradio@1.1-service (pid 293)
763K: healthd (pid 302)
762K: aee_aedv (pid 684)
757K: android.hardware.bluetooth@1.0-service-mediatek (pid 292)
720K: android.hardware.gatekeeper@1.0-service (pid 297)
718K: android.hardware.cas@1.0-service (pid 294)
682K: aee_aed (pid 534)
680K: ip6tables-restore (pid 315)
674K: iptables-restore (pid 314)
674K: netdagent (pid 377)
647K: fuelgauged (pid 336)
637K: android.hardware.configstore@1.0-service (pid 295)
627K: netdiag (pid 356)
619K: servicemanager (pid 261)
590K: mobile_log_d (pid 353)
573K: android.hidl.allocator@1.0-service (pid 290)
573K: hardcoder_server (pid 339)
571K: program_binary_service (pid 374)
567K: dumpsys (pid 3739)
560K: vndservicemanager (pid 263)
548K: sh (pid 2799)
541K: sh (pid 6705)
538K: sh (pid 333)
530K: thermald (pid 346)
525K: tombstoned (pid 376)
523K: batterywarning (pid 343)
518K: logcat (pid 337)
506K: ipsec_mon (pid 368)
495K: met_log_d (pid 352)
493K: asguard (pid 726)
477K: thermalloadalgod (pid 335)
460K: oasesd (pid 727)
449K: klogd (pid 338)
445K: duershow_localservice (pid 303)
442K: sysenv_daemon (pid 370)
421K: wifi2agps (pid 372)
410K: thermal (pid 365)
404K: wmt_launcher (pid 313)
Total PSS by OOM adjustment:
171,549K: Native
18,381K: logd (pid 260)
14,762K: camerahalserver (pid 361)
13,589K: surfaceflinger (pid 305)
10,147K: zygote (pid 288)
7,983K: cameraserver (pid 344)
7,426K: visionmanagerserver (pid 387)
7,246K: android.hardware.audio@2.0-service-mediatek (pid 291)
6,727K: media.codec (pid 359)
6,507K: mediaserver (pid 351)
6,134K: android.hardware.graphics.composer@2.1-service (pid 298)
5,768K: merged_hal_service (pid 300)
4,706K: audioserver (pid 342)
3,540K: wpa_supplicant (pid 2712)
3,416K: media.extractor (pid 350)
3,349K: drmserver (pid 345)
2,894K: /init (pid 1)
1,873K: android.hardware.wifi@1.0-service (pid 299)
1,702K: android.hardware.drm@1.0-service.widevine (pid 296)
1,688K: mnld (pid 340)
1,622K: vold (pid 277)
1,543K: netd (pid 287)
1,503K: lmkd (pid 304)
1,335K: mtk_advcamserver (pid 355)
1,324K: keystore (pid 348)
1,225K: vendor.mediatek.hardware.pq@2.0-service (pid 371)
1,190K: installd (pid 347)
1,180K: ueventd (pid 214)
1,160K: hwservicemanager (pid 262)
1,124K: wificond (pid 358)
1,113K: android.hardware.sensors@1.0-service-mediatek (pid 360)
1,079K: adbd (pid 1346)
1,056K: android.hardware.keymaster@3.0-service (pid 276)
1,037K: ged_srv (pid 1361)
918K: mediadrmserver (pid 349)
877K: gatekeeperd (pid 373)
873K: vendor.mediatek.hardware.dfps@1.0-service (pid 301)
851K: thermalserviced (pid 306)
802K: storaged (pid 357)
780K: android.hardware.broadcastradio@1.1-service (pid 293)
763K: healthd (pid 302)
762K: aee_aedv (pid 684)
757K: android.hardware.bluetooth@1.0-service-mediatek (pid 292)
720K: android.hardware.gatekeeper@1.0-service (pid 297)
718K: android.hardware.cas@1.0-service (pid 294)
682K: aee_aed (pid 534)
680K: ip6tables-restore (pid 315)
674K: iptables-restore (pid 314)
674K: netdagent (pid 377)
647K: fuelgauged (pid 336)
637K: android.hardware.configstore@1.0-service (pid 295)
627K: netdiag (pid 356)
619K: servicemanager (pid 261)
590K: mobile_log_d (pid 353)
573K: android.hidl.allocator@1.0-service (pid 290)
573K: hardcoder_server (pid 339)
571K: program_binary_service (pid 374)
567K: dumpsys (pid 3739)
560K: vndservicemanager (pid 263)
548K: sh (pid 2799)
541K: sh (pid 6705)
538K: sh (pid 333)
530K: thermald (pid 346)
525K: tombstoned (pid 376)
523K: batterywarning (pid 343)
518K: logcat (pid 337)
506K: ipsec_mon (pid 368)
495K: met_log_d (pid 352)
493K: asguard (pid 726)
477K: thermalloadalgod (pid 335)
460K: oasesd (pid 727)
449K: klogd (pid 338)
445K: duershow_localservice (pid 303)
442K: sysenv_daemon (pid 370)
421K: wifi2agps (pid 372)
410K: thermal (pid 365)
404K: wmt_launcher (pid 313)
46,172K: System
46,172K: system (pid 631)
198,702K: Persistent
99,553K: com.baidu.launcher (pid 1628 / activities)
36,404K: com.baidu.launcher:remote (pid 423)
22,029K: com.baidu.duer.thirdapp (pid 1446)
9,986K: com.baidu.duer.thirdapp:ota (pid 1981)
8,502K: com.baidu.duer.ota:ota (pid 2062)
6,850K: com.baidu.duer.ota (pid 1424)
6,035K: com.baidu.duershow.statistic (pid 1416)
4,723K: com.baidu.mesh.provisioner (pid 1477)
4,620K: vulture.watchdog (pid 1461)
74,374K: Cached
30,586K: com.baidu.input (pid 1835)
10,911K: android.process.acore (pid 1549)
10,244K: android.process.media (pid 1498)
6,018K: com.mediatek.engineermode (pid 1766)
4,809K: com.baidu.oases (pid 2448)
4,203K: com.mediatek.bluetooth.dtt (pid 2477)
4,060K: com.mediatek.providers.drm (pid 2507)
3,543K: com.mediatek.thermalmanager (pid 2556)
Total PSS by category:
107,935K: .so mmap
102,685K: .dex mmap
81,292K: Native
35,131K: .apk mmap
33,565K: Unknown
30,561K: Dalvik
18,331K: .art mmap
16,827K: Other mmap
15,580K: .oat mmap
10,677K: GL mtrack
10,372K: Dalvik Other
10,131K: EGL mtrack
2,664K: Stack
1,800K: Ashmem
574K: Other dev
268K: .ttf mmap
0K: Cursor
0K: Gfx dev
0K: .jar mmap
0K: Other mtrack
Total RAM: 1,002,660K (status moderate)
Free RAM: 441,070K ( 74,374K cached pss + 330,464K cached kernel + 36,232K free)
Used RAM: 492,779K ( 416,423K used pss + 76,356K kernel)
Lost RAM: 71,241K
ZRAM: 5,032K physical used for 13,364K in swap ( 751,988K total swap)
Tuning: 128 (large 256), oom 184,320K, restore limit 61,440K (low-ram)
dumpsys meminfo <pid> // 输出指定pid的某一进程
dumpsys meminfo --package <packagename> // 输出指定包名的进程,可能包含多个进程
2.4 procrank
获取所有进程的内存使用的排行榜,排行是以Pss的大小而排序.
# procrankPID Vss Rss Pss Uss cmdline4694715244K199568K93953K76772K system_server6284774604K184272K79868K63260K com.android.systemui3781581340K116848K63536K35956K zygote10545048780K130504K33086K20376K com.android.launcher33774239348K130300K28338K8012K zygote646871333924K54604K25609K5504K /system/bin/webview_zygote327494338336K108900K25539K16612K com.android.phone26375200K27620K18690K16088K /vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-armnn6064330764K91380K15649K9656K com.android.inputmethod.latin269312884K27868K13869K10336K /system/bin/surfaceflinger11704321764K92900K13701K6336K android.process.media13024323936K84736K13004K8064K com.android.email25553284K21308K10199K6972K /vendor/bin/hw/android.hardware.camera.provider@2.4-service11404317440K82832K9876K3808K android.rockchip.update.service18504318536K75692K8379K4096K com.android.calendar12844315752K77148K8185K3796K com.android.providers.calendar38773924K18420K7686K5064K /system/bin/mediaserver11904315400K71948K7137K2800K com.android.quicksearchbox18764315996K74824K6986K2668K com.android.mtp39131860K12104K6845K5644K media.codec10214315960K70452K6835K3020K com.android.printspooler10114314012K69076K6658K2864K com.cghs.stresstest37943520K12616K6621K4920K /system/bin/audioserver3852164032K18588K6493K4324K media.extractor14074315816K70584K6403K2296K android.ext.services11144314788K69144K5972K2240K com.android.keychain10694313648K67308K5792K2156K com.android.smspush25316256K7892K4116K2808K /vendor/bin/hw/android.hardware.audio@2.0-service38024908K11124K3948K2544K /system/bin/cameraserver3862128240K11312K3220K2156K media.metrics26133120K7556K3022K2432K /vendor/bin/hw/android.hardware.graphics.composer@2.1-service23219996K5304K2915K2820K /system/bin/logd38118964K9884K2836K1652K /system/bin/drmserver26614404K6140K2798K2604K /vendor/bin/hw/android.hardware.wifi@1.0-service25812756K6560K2463K1904K /vendor/bin/hw/android.hardware.drm@1.0-service24555064K7468K2421K2024K /system/bin/vold38831004K6548K2225K1980K /system/bin/netd25911140K5328K1985K1588K /vendor/bin/hw/android.hardware.drm@1.0-service.widevine38319280K6492K1811K1348K /system/bin/keystore38219676K5636K1809K1616K /system/bin/installd111968K2436K1714K1092K /init23414408K5576K1653K1352K /system/bin/hwservicemanager184112932K1700K1511K1504K /system/bin/adbd39015096K5632K1507K1312K /system/bin/wificond26516888K5044K1439K1164K /vendor/bin/hw/android.hardware.sensors@1.0-service24414848K5904K1422K928K /vendor/bin/hw/android.hardware.keymaster@3.0-service38410688K5308K1297K804K /system/bin/mediadrmserver26017480K5224K1261K960K /vendor/bin/hw/android.hardware.graphics.allocator@2.0-service39315560K5612K1245K1000K /system/bin/gatekeeperd4039468K3296K1244K1188K /system/bin/ip6tables-restore4029452K3200K1165K1116K /system/bin/iptables-restore2076080K1768K1158K568K /sbin/ueventd203816940K3304K1145K1088K procrank27013924K5000K1142K944K /system/bin/thermalserviced38915988K4292K1090K960K /system/bin/storaged25412244K4212K1042K868K /vendor/bin/hw/android.hardware.bluetooth@1.0-service2569048K4108K1018K596K /vendor/bin/hw/android.hardware.cas@1.0-service25715372K4372K1017K828K /vendor/bin/hw/android.hardware.configstore@1.0-service26713464K4504K993K860K /system/bin/healthd26212136K4168K896K676K /vendor/bin/hw/android.hardware.light@2.0-service26412140K4168K870K668K /vendor/bin/hw/android.hardware.power@1.0-service23310444K3428K848K760K /system/bin/servicemanager23510244K3256K805K696K /vendor/bin/vndservicemanager25212088K4088K767K636K /system/bin/hw/android.hidl.allocator@1.0-service19838932K3008K736K548K /system/bin/sh2748932K2944K727K540K /system/bin/sh2689180K3072K681K624K /system/bin/lmkd3959028K3004K662K600K /system/bin/tombstoned ------ ------ ------601566K385996K TOTAL RAM:3938668K total,2765940K free,54772K buffers,683920K cached,117060K shmem,119748K slab
2.5 showmap
该命令的输出每一行代表一个虚拟地址区域(vm_area),内容基本和proc/pid/maps基本一致.
# showmap -a 1302startendvirtualsharedsharedprivateprivateaddr addr size RSS PSS clean dirty clean dirty swap swapPSSobject -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- ------------------------------0b65b0000b65c000400000000[anon:thread stack guard page]
start addr: 虚拟地址的起始地址
end addr: 虚拟地址的结束地址
virutal size: 占用虚拟内存大小
RSS:进程独占内存 + 共享库占用内存的物理内存
PSS:进程独占内存 + 比例分配共享库占用的物理内存
shared:共享数据
private:私有数据
2.6 vmstat
vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 13284 47120 20668 542996 1 1 4 9 0 101 1 1 98 0
2.7 ps
ps -A -eo USER,MAJFL,MINFL,PID,RSS,CPU,TIME 其中的 MAJFL,MINFL分别是磁盘交换/swap交换次数