APP性能测试中如何获取CPU和PSS数据
来源:互联网 发布:如何整理mac文件 编辑:程序博客网 时间:2024/05/19 02:02
本人在最近手机APP性能数据的过程中,又重新看了一些Android的内存相关知识,对之前写过的一篇APP性能的线程类的方法做了优化,总得来说,就是增加了PSS数据和增加了数据获取之后的数据整理工作。
获取PSS的方法原理是通过adb shell dumpsys命令获取到的,之前放弃了这个方法,因为内存数据太细分了,后来发现细分的更准确。这里没有统计Native Heap和Dalvik Heap,感觉统计数据的话并没有多大的必要。对这块也不是非常了解如果有不对的地方,还请指正。
方法如下:
/** * 获取应用信息 利用Android系统dumpsys命令获取 * 命令能统计到java虚拟的堆内存和栈内存的使用情况 * * @return 返回内存占用 */public int getMemResult() {String cmd1 = Common.ADB_PATH + "adb shell dumpsys meminfo " + package_name;int mem_result = 0;try {Process p = Runtime.getRuntime().exec(cmd1);// 通过runtime类执行cmd命令// 正确输出流InputStream input = p.getInputStream();// 创建并实例化输入字节流BufferedReader reader = new BufferedReader(new InputStreamReader(input));// 先通过inputstreamreader进行流转化,在实例化bufferedreader,接收内容String line = "";while ((line = reader.readLine()) != null) {// 循环读取if (line.startsWith(" TOTAL")) {mem_result = getMemInfo(line);}}reader.close();// 此处reader依赖于input,应先关闭input.close();// 错误输出流InputStream errorInput = p.getErrorStream();// 创建并实例化输入字节流BufferedReader errorReader = new BufferedReader(new InputStreamReader(errorInput));// 先通过inputstreamreader进行流转化,在实例化bufferedreader,接收内容String eline = "";while ((eline = errorReader.readLine()) != null) {// 循环读取System.out.println(eline);// 输出}errorReader.close();// 此处有依赖关系,先关闭errorReadererrorInput.close();} catch (IOException e) {output("执行" + cmd1 + "失败!", e);}return mem_result;}下面是增加的统计方法,主要是在每次新建进程的时候都会记录一个mark,统计方法写在结束线程的方法里:
public void stopRecord() {AppLocalMySql.getInstance().ClearUpPerformaceData(mark);//整理数据PerformanceThread.key = false;//结束线程}
/** * 整理一次性能数据收集 * * @param mark * 统计mark */public void ClearUpPerformaceData(int mark) {getConnection();int cpu = 0, pss = 0, rss = 0, vss = 0, total = 0;String device = null, packages = null, test_name = null;try {if (!connection.isClosed()) {outputSuccess();Statement statement = connection.createStatement();String sql = "SELECT AVG(cpu),AVG(pss),AVG(rss),AVG(vss),COUNT(*),device,package,test_name FROM app_result WHERE mark = "+ mark;ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {cpu = resultSet.getInt(1);pss = resultSet.getInt(2);rss = resultSet.getInt(3);vss = resultSet.getInt(4);total = resultSet.getInt(5);device = resultSet.getString("device");packages = resultSet.getString("package");test_name = resultSet.getString("test_name");}String sql2 = "INSERT INTO app_report (mark,test_name,package,device,cpu,pss,rss,vss,total) VALUES ("+ mark + ",'" + test_name + "','" + packages + "','" + device + "'," + cpu + "," + pss + ","+ rss + "," + vss + "," + total + ")";statement.executeUpdate(sql2);statement.close();connection.close();}} catch (SQLException e) {output("统计方法出错!", e);}}
宣传一下自己的QQ群:
Tester终点站,群号:340964272
阅读全文
0 0
- APP性能测试中如何获取CPU和PSS数据
- APP测试中压力测试和性能测试差异
- 【python】获取实际内存数据pss--total
- android性能测试中各种数据的获取方式
- ios端app性能测试(cpu/内存/耗电)
- android app如何从数据库中获取需要的数据?
- 测试架构师之路---实际工作中如何开展Android App性能自动化测试
- 性能测试指标:CPU Load和CPU利用率的关系
- 性能测试指标:CPU Load和CPU利用率的关系
- HBase 高性能获取数据(多线程批量式解决办法) + MySQL和HBase性能测试比较
- cpu性能测试代码
- linux cpu性能测试
- 性能测试中如何定位性能瓶颈
- 性能测试中如何定位性能瓶颈
- 性能测试中如何定位性能瓶颈
- Android测试中 VSS,RSS,PSS,USS解释
- 如何获取CPU的主频和使用率?
- 如何提高iOS中app的性能
- linux中的typeof使用
- Python学习之urllib库
- 表 的补充
- 使用批处理修改注册表的命令参数
- Android Studio 获取SHA1
- APP性能测试中如何获取CPU和PSS数据
- 将两个字符串找出不同,并将不同处高亮显示
- [转]SELinux之于MySQL
- Windows Media Foundation 音视频采集
- 大文件加签处理
- 经纬度与距离之间的互换
- Vmware安装Centos7上网问题的解决
- Faster-Rcnn caffe 安装碰到的一些问题(ubuntu 16.04环境下)
- android 反编译apk ,修改apk ,smail,插桩