手机系统内存是一种随机存取存储器(RAM),高速存取,读写时间相等,且与地址无关。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。
分类
手机内存一般分为:RAM和ROM
RAM运行内存通常是作为操作系统或其他正在运行程序的临时存储介质,也称作系统内存。就好比计算机中的内存条,如果内存条容量越大,计算机就有更多的内存来存储同时运行的任务,这样系统响应的速度也就越快,RAM在手机中就起到了这个作用。
ROM则是机身存储空间,主要包含自身系统占据的空间和用户可用的空间两部分。ROM相当于PC机上的硬盘,用来存储和保存数据。即使是断电,ROM也能够保留数据。手机中的系统文件,或者图片、音乐、照片等通常是存储在这里面的。
内存说明
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
adb 查看单个内存占用量 (均不需要root权限)
单个应用的最大内存限制
adb shell "getprop | grep heapgrowthlimit"
应用启动后分配的初始内存
adb shell "getprop|grep dalvik.vm.heapstartsize"
单个java虚拟机的最大内存限制
adb shell "getprop|grep dalvik.vm.heapsize"
adb内存数据采集
使用 adb shell "dumpsys meminfo -s "命令,输出结果分以下4部分:
① process 以进程的PSS从大到小依次排序显示,每行显示一个进程;
② OOM adjustment 分别显示每类的进程情况
③ category 以Dalvik/Native/.art mmap/.dex map等划分的各类进程的总PSS情况
④ total 总内存、剩余内存、可用内存、其他内存
执行结果如下图,重点取该应用的TOTAL 对应的内存占用大小(KB)
PS:在apk内调用运行获取其他app的内存数据则需要root权限