VSS
Vss是占用的虚拟内存,如果没有映射实际的内存也算进来。
RSS
Rss是占用的物理内存。是共享内存+私有内存。因为共享内存是多个进程共用的,所以存在重复计算。
PSS
Pss是占用的私有内存加上平分的共享内存。例如一块1M的共享内存被两个进程共享,那每个进程分500K。各进程的Pss相加基本等于实际被使用的物理内存,所以这个经常是最重要的参数。
USS
Uss Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)USS 是一个非常非常有用的数字, 因为它揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止, USS 就是实际被返还给系统的内存大小。
USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。怀疑某个程序有内存泄露可以查看这个值是否一直有增加
procrank
PID Vss Rss Pss Uss cmdline
818 1049892K 106988K 83446K 78648K com.turingcat.controller
513 93080K 39716K 34369K 29308K mqttserver
1143 77224K 38052K 32703K 27644K homebridge
466 942228K 45536K 23049K 19128K system_server
120 851284K 41196K 14829K 9060K zygote
737 927780K 33940K 12800K 10040K com.android.settings
599 899380K 33484K 12036K 9108K com.android.systemui
709 892220K 26440K 8658K 6852K com.google.android.inputmethod.pinyin
776 865424K 24504K 6919K 5324K android.process.media
758 864292K 23572K 6689K 5372K android.process.acore
1115 874688K 25848K 5768K 3680K com.thirdparty.superuser:superuser
962 869468K 22004K 5316K 4080K com.android.bluetooth
724 882820K 22316K 4813K 3404K com.android.nfc
122 29272K 7144K 4521K 3492K /system/bin/mediaserver
1069 873828K 22896K 4379K 2736K com.thirdparty.superuser
1024 863044K 20164K 4149K 2968K com.android.gallery3d
2545 862440K 20488K 4032K 2744K com.android.inputmethod.latin
1004 861292K 18424K 3058K 1904K com.android.camera2
789 860188K 18228K 2754K 1620K com.android.provision
875 860180K 18272K 2739K 1644K com.android.externalstorage
119 19584K 3668K 1767K 1424K /system/bin/surfaceflinger
121 9544K 3356K 1342K 796K /system/bin/drmserver
640 3368K 1932K 1055K 888K /system/bin/wpa_supplicant
3589 1792K 1268K 1046K 1040K ./procrank
116 9784K 1280K 605K 512K /system/bin/netd
114 4736K 1256K 588K 508K /system/bin/vold
124 3344K 1200K 454K 360K /system/bin/keystore
125 6632K 948K 441K 400K /system/bin/ccd
1 540K 368K 282K 220K /init
118 1368K 660K 241K 216K /system/bin/rild
918 1020K 540K 233K 220K /system/bin/dhcpcd
1422 7660K 236K 224K 224K /sbin/adbd
228 3504K 468K 192K 176K /system/bin/sdcard
854 3516K 464K 184K 168K /system/bin/sdcard
123 992K 484K 177K 164K /system/bin/installd
3571 928K 472K 156K 120K sh
117 1028K 408K 155K 144K /system/bin/debuggerd
3558 924K 468K 152K 116K /system/bin/sh
94 516K 216K 152K 92K /sbin/ueventd
240 924K 456K 148K 116K /system/bin/sh
112 1424K 144K 140K 140K /sbin/healthd
127 920K 444K 135K 104K /system/bin/sh
3565 2712K 192K 125K 104K su
1142 912K 432K 123K 92K /system/bin/sh
113 996K 324K 114K 108K /system/bin/servicemanager
3570 660K 128K 56K 32K /system/xbin/su
3568 660K 128K 53K 28K /system/xbin/su
115 656K 116K 45K 24K /system/xbin/su
3564 656K 96K 43K 28K su
------ ------ ------
287479K 237320K TOTAL
RAM: 828508K total, 60664K free, 136668K buffers, 313116K cached, 900K shmem, 45636K slab
cat /proc/meminfo
可用内存=free的内存+cached的内存+buffers的内存
cat /proc/meminfo
cat /proc/meminfo
MemTotal: 828508 kB
MemFree: 68692 kB
Buffers: 136768 kB
Cached: 313116 kB
SwapCached: 0 kB
Active: 416584 kB
Inactive: 227840 kB
Active(anon): 195096 kB
Inactive(anon): 860 kB
Active(file): 221488 kB
Inactive(file): 226980 kB
Unevictable: 516 kB
Mlocked: 0 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 828508 kB
LowFree: 68692 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 195292 kB
Mapped: 83904 kB
Shmem: 900 kB
Slab: 45740 kB
SReclaimable: 33352 kB
SUnreclaim: 12388 kB
KernelStack: 4296 kB
PageTables: 5604 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 414252 kB
Committed_AS: 14549956 kB
VmallocTotal: 1021952 kB
VmallocUsed: 31488 kB
VmallocChunk: 719876 kB
dumpsys meminfo XXX
Android程序内存被分为2部分:native和dalvik,dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是 native+dalvik 不能超过最大限制。Android程序内存一般限制在16M。
Android应用程序的默认最大内存值
Android应用程序的默认最大内存值为16M,有些应用程序可能会出现内存溢出,譬如ERROR/AndroidRuntime(264):java.lang.OutOfMemoryError: bitmap size exceeds VM budget
修改配置文件
getprop |grep heap
[dalvik.vm.heapgrowthlimit]: [192m]
[dalvik.vm.heapmaxfree]: [8m]
[dalvik.vm.heapminfree]: [512k]
[dalvik.vm.heapsize]: [512m]
[dalvik.vm.heapstartsize]: [16m]
[dalvik.vm.heaptargetutilization]: [0.75]
Applications Memory Usage (kB):
Uptime: 182335652 Realtime: 182335652
** MEMINFO in pid 818 [com.turingcat.controller] **
Pss Private Private Swapped Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 21827 21780 0 0 29232 27943 1156
Dalvik Heap 24004 23892 0 0 51092 23684 27408
Dalvik Other 9559 9404 0 0
Stack 824 824 0 0
Ashmem 132 0 0 0
Other dev 21 0 20 0
.so mmap 6254 2012 3184 0
.apk mmap 1437 0 664 0
.ttf mmap 506 0 180 0
.dex mmap 18188 1056 15192 0
Other mmap 94 4 8 0
Unknown 348 348 0 0
TOTAL 83194 59320 19248 0 80324 51627 28564
Objects
Views: 314 ViewRootImpl: 3
AppContexts: 13 Activities: 3
Assets: 2 AssetManagers: 2
Local Binders: 42 Proxy Binders: 42
Death Recipients: 1
OpenSSL Sockets: 0
SQL
MEMORY_USED: 2956
PAGECACHE_OVERFLOW: 2288 MALLOC_SIZE: 62
DATABASES
pgsz dbsz Lookaside(b) cache Dbname
1 1088 21 0/37/3 /data/user/0/com.turingcat.controller/databases/ird.db
4 196 21 0/147/3 /data/user/0/com.turingcat.controller/databases/vicenter.db
4 296 457 155615/342/25 /data/user/0/com.turingcat.controller/databases/TuringCatProvider.db
4 52 128 296/69/21 /data/user/0/com.turingcat.controller/databases/bugly_db_
4 56 21 0/59/3 /data/user/0/com.turingcat.controller/databases/MideaSLK.db
4 1560 87 32015/58/10 /data/user/0/com.turingcat.controller/databases/device_desc.db
showmap -a pid
更加细化