内存使用情况的获取,当前主要有如下三种方案:
1.dumpsys meminfo <package_name> 或dumpsys meminfo <package_id>
2.AndroidStudio 自带 CPU 和内存检测功能
3.使用Android自身提供的ActivityManager.MemoryInfo()方法获得
dumpsys meminfo 或dumpsys meminfo
参数含义:
l Naitve Heap Size: 从mallinfo usmblks获得,代表最大总共分配空间
l Native Heap Alloc: 从mallinfo uorblks获得,总共分配空间
l Native Heap Free: 从mallinfo fordblks获得,代表总共剩余空间
l Native Heap Size 约等于Native Heap Alloc + Native Heap Free
l mallinfo是一个C库, mallinfo 函数提供了各种各样的通过C的malloc()函数分配的内存的统计信息。
l Dalvik Heap Size:从Runtime totalMemory()获得,Dalvik Heap总共的内存大小。
l Dalvik Heap Alloc: Runtime totalMemory()-freeMemory() ,Dalvik Heap分配的内存大小。
l Dalvik Heap Free:从Runtime freeMemory()获得,Dalvik Heap剩余的内存大小。
l Dalvik Heap Size 约等于Dalvik HeapAlloc + Dalvik Heap Free
重点关注如下几个字段:
(1) Native/Dalvik 的 Heap 信息中的alloc
具体在上面的第一行和第二行,它分别给出的是JNI层和Java层的内存分配情况,如果发现这个值一直增长,则代表程序可能出现了内存泄漏。
(2) Total 的 PSS 信息
这个值就是你的应用真正占据的内存大小,通过这个信息,你可以轻松判别手机中哪些程序占内存比较大了。
AndroidStudio 自带 CPU 和内存检测功能
测试方法
手机连接电脑,在标1中选择要调试的手机,标注2中选择要检测的应用进程,memory是内存监控,cpu是cpu监控。
测试时,重点关注两点:
1)退出某个页面后,内存是否回落。如果没有及时回落,也不一定就是问题,可能程序还没有自动GC,故一般情况下,需要手动GC,如果手动GC后,仍无法回落,此时可以确定有问题。
2)进行某个操作后,内存增长的过快,也可能存在风险,此时可反复操作进行确认。
使用Android自身提供的ActivityManager.MemoryInfo()方法获得
通过该方法获取某应用的内存信息。目前网易的Emmagee工具就是通过该方法实现某应用内存和cpu数据的获取,测试简单方便,安装app以后选中被测应用即可开始测试,界面会展示内存、CPU和流量等数据。完成测试后,可在本地SD卡种保存一份性能测试数据,可以从里面获取内存信息。
网友评论