USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
大小规律:
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
image.png
七、 内存值获取方法
使用命令 adb shell dumpsys meminfo package_name 获取内存信息,如日历的内存信息如下:
image.png
PSS Total:进程各部分内存的消耗,是所有进程PSS相加得到系统占用内存的总和
Native Heap:Native代码分配的内存,虚拟机和Android框架分配内存。关于什么是Native代码,即非Java代码分配的内存
Dalvik Heap:Java对象分配的占据内存
Dalvik Other:类数据结构和索引占据内存
Stack:栈内存
Private Dirty:它基本上是进程内不能被分页到磁盘的内存,也不和其他进程共享,private Dirty内存是最重要的部分,因为只被自己进程使用
Private Clean:是已经映射持久文件使用的内存页(例如正在被执行的代码),因此一段时间不使用的话就可以置换出去
Heap Alloc:是Dalvik堆和本地堆分配使用的大小,它的值比Pss Total和Private Dirty大,因为进程是从Zygote中复制分裂出来的,包含了进程共享的分配部分
Ashmem:不以dalvik-开头的内存区域,匿名共享内存用来提供共享内存通过分配一个多个进程,Android匿名共享内存是基于Linux共享内存的,都是在tmpfs文件系统上新建文件,并将其映射到不同的进程空间,从而达到共享内存的目的,只是,Android在Linux的基础上进行了改造,并借助Binder+fd文件描述符实现了共享内存的传递。
Other dev:内部driver