赞
踩
一个进程占用了多少内存,主要有下述四种说法:
VSS(Virtual Set Size),虚拟内存。RSS + 未分配实际物理内存
单个进程可访问的全部虚拟内存地址空间,其大小包括未实际申请的物理内存。
RSS(Resident Set Size),物理内存。USS + 包含共享库
单个进程实际占用的内存大小,RSS不太准确的地方在于它包括该进程所使用共享库全部内存大小。对于一个共享库,可能被多个进程使用,实际该共享库只会被装入内存一次。
PSS(Proportional Set Size),物理内存。USS + 按比例包含共享库
PSS相对于RSS计算共享库内存大小是按比例的。N个进程共享,该库对PSS大小的贡献只有1/N。
USS(Unique Set Size),物理内存。进程独占的内存
单个进程私有的内存大小,即该进程独占的内存部分。USS表示运行一个特定进程的真实内存增量大小,如果进程终止,USS就是实际被返还给系统的内存大小。
查看指定进程的内存信息:dumpsys meminfo [pid]
Applications Memory Usage (in Kilobytes): Uptime: 2455033 Realtime: 2455033 Pss Private Private SwapPss Heap Heap Heap Total Dirty Clean Dirty Size Alloc Free ------ ------ ------ ------ ------ ------ ------ Native Heap 212 184 28 36524 0 0 0 Dalvik Heap 0 0 0 0 0 0 0 Stack 4 0 4 740 Other dev 9 0 0 0 .so mmap 36266 16 35460 5740 Other mmap 12 0 8 52 Unknown 64 36 28 6708 TOTAL 86331 236 35528 49764 0 0 0 App Summary Pss(KB) ------ Java Heap: 0 Native Heap: 184 Code: 35476 Stack: 0 Graphics: 0 Private Other: 104 System: 50567 TOTAL: 86331 TOTAL SWAP PSS: 49764
Android heap上的内存分为两块:native和dalvik。dalvik就是我们平常说的java堆,Java对象分配占据的内存;Native代码分配的内存,虚拟机和Android框架分配内存。
获取所有进程的内存使用的排行榜,排行是以Pss的大小而排序。procrank命令比dumpsys meminfo命令,能输出更详细的VSS/RSS/PSS/USS内存指标。
PID Vss Rss Pss Uss Swap PSwap USwap ZSwap cmdline
2572 4757048K 280016K 156987K 147300K 8916K 145K 0K 37K com.bbk.launcher2
2548 4276448K 293992K 153739K 140888K 8852K 151K 8K 39K com.android.systemui
1037 4887848K 272952K 138643K 128120K 17688K 9001K 8852K 2328K system_server
3492 1321548K 132312K 51964K 46528K 7004K 476K 0K 123K com.vivo.globalsearch
......
RAM: 7801436K total, 3109936K free, 9560K buffers, 2247508K cached, 3468K shmem, 836080K slab
USS是进程独自占用的物理内存(不包含共享库占用的内存),它是一个非常非常有用的数字, 揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止, USS 就是实际被返还给系统的内存大小。
USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。怀疑某个程序有内存泄露可以查看这个值是否一直有增加。
查看系统的详尽内存信息,包含内核情况
MemTotal: 7801436 kB //总内存 MemFree: 3104012 kB //空闲内存 MemAvailable: 5242416 kB Buffers: 9560 kB //给文件的缓冲大小 Cached: 2249552 kB SwapCached: 8640 kB Active: 792860 kB Inactive: 2345844 kB Active(anon): 419236 kB Inactive(anon): 466352 kB Active(file): 373624 kB Inactive(file): 1879492 kB Unevictable: 3260 kB Mlocked: 3260 kB SwapTotal: 2097148 kB SwapFree: 1808416 kB Dirty: 64 kB //等待被写回到磁盘的大小 Writeback: 0 kB AnonPages: 878096 kB Mapped: 851592 kB Shmem: 3468 kB Slab: 836120 kB SReclaimable: 121448 kB SUnreclaim: 714672 kB KernelStack: 48836 kB PageTables: 71760 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 5997864 kB Committed_AS: 108413340 kB VmallocTotal: 263061440 kB //虚拟内存大小 VmallocUsed: 0 kB VmallocChunk: 0 kB CmaTotal: 299008 kB CmaFree: 199368 kB RSCISF: 261120 kB RSCIBF: 110560 kB NR_KMALLOC: 19840 kB NR_VMALLOC: 80372 kB NR_DMA_NOR: 0 kB NR_DMA_CMA: 95548 kB NR_ION: 161148 kB free_ion: 10092 kB free_ion_pool: 10092 kB free_ion_heap: 0 kB NR_GPU: 136452 kB free_gpu: 21896 kB o0a1r0: 120 kB o1a1r0: 21776 kB o4a0r256: 0 kB o8a0r32: 0 kB zram_size: 74708 kB pcppages: 3788 kB ALL_MEM: 7778432 kB
查看可用内存,缺省单位KB。该命令比较简单、轻量,专注于查看剩余内存情况。数据来源于/proc/meminfo。
total used free shared buffers
Mem: 7988670464 4812099584 3176570880 3551232 9789440
-/+ buffers/cache: 4802310144 3186360320
Swap: 2147479552 295645184 1851834368
不仅可以查看内存情况,还可以查看进程运行队列、系统切换、CPU时间占比等情况,另外该指令还是周期性地动态输出。
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
3 0 1243544 400116 12276 5343880 9 19 41 53 1 465 12 12 76 0
参数列总共15个参数,分为4大类:
参考:
http://gityuan.com/2016/01/02/memory-analysis-command/
https://www.cnblogs.com/arnoldlu/p/9375377.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。