Android 内存泄露测试数据处理--procrank,setprop,getprop
2013-10-22 15:10
701 查看
1.Android内存测试常用的几个概念。
VSS--virtual set size 虚拟耗用内存(包含共享库占用的内存)
RSS--Resident set size实际使用的物理内存(包含共享库占用的内存)
PSS--Proportional set size 实际使用的物理内存(比例分配共享库占用的内存)
USS--Unique Set size:进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小如下规律:VSS>=RSS>=Pss>=USS
2.Android procrank命令就提供了上面几个概念对应的数据---------并不是所有的Android系统都集成了procrank命令。
对应内存泄露测试中,USS数据是一种最好显示进程内存泄露方式。原因:USS能够完全显示进程独占的物理内存。可以正常显示正在运行的独立进程的内存消耗。当进程被杀死,USS 显示的内存消耗可以真实的反馈到系统。
对应于Android API:
1.final ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
2.Android.os.Debug.MemoryInfo[] memoryInfoArray = am.getProcessMemoryInfo(new int[]{android.os.Process.myPid()});
其中MemoryInfo类提供了API接口帮助我们获取内存数据
USS: getTotalPrivateDirty()
RSS: getTotalSharedDirty()
PSS: getTotalPss()
procrank命令: # procrank
procrank
PID Vss Rss Pss Uss cmdline
481 31536K 30936K 14337K 9956K system_server
475 26128K 26128K 10046K 5992K zygote
526 25108K 25108K 9225K 5384K android.process.acore
523 22388K 22388K 7166K 3432K com.android.phone
574 21632K 21632K 6109K 2468K com.android.settings
521 20816K 20816K 6050K 2776K jp.co.omronsoft.openwnn
474 3304K 3304K 1097K 624K /system/bin/mediaserver
37 304K 304K 289K 288K /sbin/adbd
29 720K 720K 261K 212K /system/bin/rild
601 412K 412K 225K 216K procrank
1 204K 204K 185K 184K /init
35 388K 388K 182K 172K /system/bin/qemud
284 384K 384K 160K 148K top
27 376K 376K 148K 136K /system/bin/vold
导出的数据可以用Exel表通过进程名进行过滤,然后插入相对于进程的USS折线图。可以明显的查看是否存在内存泄露。
3.getprop命令:
#getprop
4.setprop key value
例子:设置状态栏中功能不可用:setprop persist.gn.monkeytest.status 1=================该属性不是每一个Android系统都有的。
设置成功后重启手机,重启后才设置成功。设置目的是防止monkey测试过程中将状态栏拉下后断开USB调试。
VSS--virtual set size 虚拟耗用内存(包含共享库占用的内存)
RSS--Resident set size实际使用的物理内存(包含共享库占用的内存)
PSS--Proportional set size 实际使用的物理内存(比例分配共享库占用的内存)
USS--Unique Set size:进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小如下规律:VSS>=RSS>=Pss>=USS
2.Android procrank命令就提供了上面几个概念对应的数据---------并不是所有的Android系统都集成了procrank命令。
对应内存泄露测试中,USS数据是一种最好显示进程内存泄露方式。原因:USS能够完全显示进程独占的物理内存。可以正常显示正在运行的独立进程的内存消耗。当进程被杀死,USS 显示的内存消耗可以真实的反馈到系统。
对应于Android API:
1.final ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
2.Android.os.Debug.MemoryInfo[] memoryInfoArray = am.getProcessMemoryInfo(new int[]{android.os.Process.myPid()});
其中MemoryInfo类提供了API接口帮助我们获取内存数据
USS: getTotalPrivateDirty()
RSS: getTotalSharedDirty()
PSS: getTotalPss()
procrank命令: # procrank
procrank
PID Vss Rss Pss Uss cmdline
481 31536K 30936K 14337K 9956K system_server
475 26128K 26128K 10046K 5992K zygote
526 25108K 25108K 9225K 5384K android.process.acore
523 22388K 22388K 7166K 3432K com.android.phone
574 21632K 21632K 6109K 2468K com.android.settings
521 20816K 20816K 6050K 2776K jp.co.omronsoft.openwnn
474 3304K 3304K 1097K 624K /system/bin/mediaserver
37 304K 304K 289K 288K /sbin/adbd
29 720K 720K 261K 212K /system/bin/rild
601 412K 412K 225K 216K procrank
1 204K 204K 185K 184K /init
35 388K 388K 182K 172K /system/bin/qemud
284 384K 384K 160K 148K top
27 376K 376K 148K 136K /system/bin/vold
导出的数据可以用Exel表通过进程名进行过滤,然后插入相对于进程的USS折线图。可以明显的查看是否存在内存泄露。
3.getprop命令:
#getprop
4.setprop key value
例子:设置状态栏中功能不可用:setprop persist.gn.monkeytest.status 1=================该属性不是每一个Android系统都有的。
设置成功后重启手机,重启后才设置成功。设置目的是防止monkey测试过程中将状态栏拉下后断开USB调试。
相关文章推荐
- Android 内存泄露测试数据处理--procrank,setprop,getprop(转)
- android应用内存占用测试(每隔一秒打印procrank的信息)
- Android 处理内存泄露的方法
- Android内存泄露——全解析和处理办法
- Android 处理内存泄露的方法
- Android内存泄露——全解析和处理办法
- android 内存监控 procrank vss pss
- android 内存泄露浅谈和处理
- android开发游记:性能测试中内存泄露排查方法与防止泄露编码心得
- Android内存泄露分析和处理
- Android使用procrank和dumpsys meminfo分析内存占用情况
- Android使用procrank和dumpsysmeminfo分析内存占用情况
- Android - procrank查看进程占用内存情况
- Android内存泄露实时监测——LeakCanary/MAT等(Android Studio+Eclipse),测试
- 关于android 3.0系统的内存限制的一些测试数据
- 了解关于Android内存泄露等相关问题的处理方式
- Android内存泄露——全解析和处理办法
- android手机测试中如何查看内存泄露
- Android性能测试之内存泄露以及GC机制浅析(三)
- Android 中 Handler 引起的内存泄露 在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。其实这可能导致内存泄露,代码中哪里可能导致内存泄露,又是如何