APP——内存测试——参考01
前言:
1.该内容为APP应用客户端的性能测试,未涉及后台,所以并非针对API或数据接口
2.测试的目标项:资源消耗、内存泄露、电量功耗、响应时间
3.客户端的性能指标:内存、CPU、流量
4.本系列主要是讲述 如何获取安卓APP应用的性能指标,并简单分析,定位问题
一、查看 内存 指标:
执行命令:adb shell ps -A |findstr com.wawj.app.t
C:\Users\del>adb shell ps -A |findstr com.wawj.app.t
u0_a165 19335 557 5582292 264620 0 0 S com.wawj.app.t
u0_a165 19531 557 4574096 88564 0 0 S com.wawj.app.t:pushcore
u0_a165 23819 19335 4878692 207928 0 0 S com.wawj.app.t
C:\Users\del>
得到的进程(PID):19335
查询内存信息:
可通过两种方式获取:
a.通过 “ dumpsys meminfo 包名/pid ” 命令获取,输入:dumpsys meminfo 30017
adb shell dumpsys meminfo 19335 或者 adb shell dumpsys meminfo com.wawj.app.t
Pss Total :实际使用的物理内存
private dirty:私有驻留内存
Heap Size: 占用总内存(Heap 堆)(扩展:进程内存空间是虚拟内存,区分于物理内存,进程无法直接操作物理内存RAM。
必要时,操作系统对其进行映射,使进程能应用到物理内存)
Heap Alloc: 分配内存
Heap Free: 空闲内存
native process和java process占据内存的大小(扩展:c++申请的内存为native process,java申请的内存:java process)
内存大小: native process:13004
dalvik process:10448
注:因为Android系统对dalvik的vm heapsize作了硬性限制,当java进程申请的java空间超过阈值时,就会抛出OOM异常(这个阈值可以是48M、24M、16M等,视机型而定)
查看单个应用最大内存限制,输入命令:adb shell getprop |findstr heapgrowthlimit。dalvik process 超过就会抛OOM异常
执行命令:adb shell getprop |findstr heapgrowthlimit
=================================================================================================
可直接通过:procrank 。
手机中的sh是经过精简过的,有些手机可能没有 procrank 命令,可以使用genymotion模拟器,或是自己安装procrank命令。
(我也没这个命令,没有装好,这部分内容未操作,为网络直接获取)
VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)——是单个进程全部可访问的地址空间
RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)——单个进程实际占用的内存大小,不是精确描述
PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)——对于系统中的整体内存使用是一个很好的描述
USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)——单个进程的全部私有内存大小,亦即全部被该进程独占的内存大小。
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS。
USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字
====================================================================================================
代码获取内存数据:
java调用Adb shell dumpsys meminfo再用字符串截取方式获取内存,可对其数据进行返回打印,实现监控。
传入参数为:应用包名,这个不可变。
package com.hss.performanceTest;
/*** from hss* data:2017/9/8* project:getMemory*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class getMemory {public static String GetMemory(String packageName) throws IOException, InterruptedException {String str3=null;Runtime runtime = Runtime.getRuntime();Process proc = runtime.exec("adb shell dumpsys meminfo "+packageName);try {if (proc.waitFor() != 0) {System.err.println("exit value = " + proc.exitValue());}BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));StringBuffer stringBuffer = new StringBuffer();String line = null;while ((line = in.readLine()) != null) {stringBuffer.append(line+" ");}String str1=stringBuffer.toString();String str2=str1.substring(str1.indexOf("Objects")-60,str1.indexOf("Objects")); str3=str2.substring(0,10);str3.trim();} catch (InterruptedException e) {System.err.println(e);}finally{try {proc.destroy();} catch (Exception e2) {}}return str3 ;}public static void main(String args[]) {System.out.println("开始运行...");try {String resurt = getMemory.GetMemory("com.hundsun.stockwinner.sxzq");System.out.println("山西证券的内存:"+resurt);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} } }
运行截图:
参考网址:https://blog.csdn.net/heshushun/article/details/77893817
APP——内存测试——参考01相关推荐
- 安卓app内存测试脚本(分场景测试)
#!/bin/bashResultPath="/Users/mft/性能测试/结果/内存结果.txt" PackageName="cn.babyfs.android&qu ...
- monkey测试===通过monkey测试检查app内存泄漏和cpu占用
最近一直在研究monkey测试.网上资料很多,但都是一个抄一个的.原创的很少 我把检查app内存泄漏的情况梳理一下: 参考资料: Monkey测试策略:https://testerhome.com/t ...
- APP性能测试--内存测试
一. 内存占用 对于智能手机而言,内存大小是固定的:因此,如果单个app的内存占用越小,手机上可以安装运行的app就越多:或者说app的内存占用越小,在手机上运行就会越流畅.所以说,内存占用的大小,也 ...
- 软件测试黑马工程师---Android app测试(01)
手机,现在已经完全的融进了现代的生活里.现在只要你带一部手机,基本上已经可以完成生活的基本需求了,衣----淘宝.天猫等各大网络商店送货之你家门口,食---美团.饿了么恨不得把美食送到你嘴边.住--- ...
- 用python对某校园热水服务app进行测试,实现自动免费用水(仅供参考)
前言 本文只是对某校园热水服务app做个测试,其实本人并没有做大坏事,并未传播相关技术,文章以下内容的敏感部分会打码,并且相关厂商已经正在进行漏洞修复,大家看看就好.文章后会提供"Pytho ...
- APP渗透测试准备(一)
APP渗透测试准备(一) 文章目录 APP渗透测试准备(一) 环境准备 安装adb 安装frida frida hook实例 环境准备 Windows10 X64 Python 3.7 OppoR9s ...
- android应用测试机型,app兼容测试选择哪些机型才够全面呢?
原标题:app兼容测试选择哪些机型才够全面呢? 各位搜狗测试的小伙伴们,我们又相遇在一个美好的周末了,今天让我们一起讨论一下如何选择兼容机型. 01 首先,我们先了解一下什么是兼容测试,兼容测试的表现 ...
- 有哪些好用的App云测试平台
文章目录 有哪些好用的App云测试平台 有哪些好用的App云测试平台 目前对移动App的测试主要指的是下面几部分: 兼容性测试--App对不同手机.操作系统版本的兼容- 性测试,包括安装.启动.卸载等 ...
- 移动应用/APP的测试流程及方法
1. APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先 ...
最新文章
- (Shadow,Gradient)
- 百度:I am from China, wait, am I?
- PHP远程DoS漏洞深入分析及防护方案
- 机试记不住头文件_计算机考研机试攻略
- top99 slam
- 蓝桥杯java第六届决赛第二题--五星填数
- C++ BUILDER 消息处理的深入探索
- centos 7.x 实现免密登录
- web前端开发的好工具sublime
- python扩展文件_1. 使用 C 或 C++ 扩展 Python
- 数据流图怎么画_概率图模型怎么画?5个步骤完成专业模型图
- php jumppage加载网址,php 分页类 扩展代码
- 如何把测试库的统计信息导入到生产库
- php页面防刷,PHP防止刷新重复提交页面的示例代码
- LintCode_44 最小子数组
- php高德地图计算距离接口,高德地图计算两坐标之间距离
- iOS CoreData (二) 版本升级和数据库迁移
- qemu前后端features协商过程分析(vhost_user后端)
- Tilemap瓦片资源
- 【路由器】OpenWrt 简介和安装
热门文章
- java 适合练手的java项目
- java foreach标签_Java中Velocity foreach循环标签详解
- 避障机器人程序c语言,移动机器人的避障实验设计+源程序+流程图.doc
- 苹果电脑打开wps云文档方法
- [Error Code: 904, SQL State: 42000] ORA-00904 : 标识符无效
- EventBus使用详解的
- 怎样快速锁定计算机加密硬盘,教你如何进行BitLocker加密
- 微软业务生产力平台基础架构优化(BPIO)之企业项目管理(EPM)解决方案
- C语言编程>第三周 ④ 求100之内的素数。
- 一文解读电压放大器(电压放大器原理)