Pss
PSS
(Proportional Set Size) = 进程独占的内存 + 进程程共享的内存 / 映射次数。
内存的管理是以 page 为单位的, 如果 page 的 _refcount或者 _mapcount为 1, 那么就是进程独占的内存. 也叫 private. 如果 page 的 _mapcount 为 n
( n >= 2), 这块内存以 page
/ n 来统计。
Private_Dirty
Private 在上面已经说过了。 而 Dirty 分为 PageDirty和 pte_dirty. PageDirty就是所说的脏页( 文件读到内存中被修改过, 就会标记为脏页)。 pte_dirty则当 vma 用于 anonymous 的时候, 读写这段 vma 时候, 触发 page
fault, 调用 do_anonymous_page
, 如果vma_flags中包含 VM_WRITE, 则会通过 pte_mkdirty(entry)标记。
Private_Clean
与 Private_Dirty 相反。
Swap
一般情况下, 在 Android 中就是 zram, 通过压缩内存页面并将其放入动态分配的内存交换区来增加系统中的可用内存量, 压缩的都是匿名页。
类型 |
匹配字符串 |
Ashmem |
/dev/ashmem |
Gfx dev |
/dev/kgsl-3d0 |
Other dev |
/dev/* |
.so mmap |
*.so 例 /system/lib64/libstdc++.so |
.jar mmap |
*.jar 例 /system/framework/framework.jar |
.apk mmap |
*.apk 例 /system/framework/framework-res.apk |
.ttf mmap |
*.ttf 例 /system/fonts/Roboto-BlackItalic.ttf |
.dex mmap |
*.vdex 例 /system/framework/boot.vdex |
.oat mmap |
*.oat 例 /system/framework/arm64/boot-ext.oat |
.art mmap |
*.art 例 /system/framework/arm64/boot.art |
Other mmap |
不属于上面的类型 |
类型 |
匹配字符串 |
Native Heap |
[anon:libc_malloc] 或 [heap] |
Dalvik Heap |
[anon:dalvik-* |
Dalvik Other |
Dalvik Heap 的部分 比如 [anon:dalvik-indirect ref 开头的) |
mallinfo()
返回内存分配的统计信息, 函数声明在 android/bionic/libc/include/malloc.h,函数定义在 android/bionic/libc/bionic/malloc_common.h.
#if defined(USE_SCUDO) #include "scudo.h" #else #include "jemalloc.h" #endif |
Native Heap Size |
mallinfo.usmblks |
Maximum total allocated space |
Native Heap Alloc |
mallinfo.uordblks |
Total allocated space |
Native Heap Free |
mallinfo.fordblks |
Total free space |
runtime
Runtime runtime = Runtime.getRuntime(); //
Do GC since countInstancesOfClass counts unreachable
objects. long dalvikMax
= runtime.totalMemory() / 1024; |
Dalvik Heap Free |
runtime.freeMemory() |
Dalvik Heap Size |
runtime.totalMemory() |
Dalvik Heap Alloc |
Dalvik Heap Size - Dalvik Heap Free |
Java Heap
//
dalvik private_dirty |
Native Heap
nativePrivateDirty; // libc_malloc |
Code
//
so mmap private_dirty + private_clean |
Stack
//
stack private_dirty |
Graphic
//Gfx
Dev private_dirty + private_clean
|
System
B版本