性能测试之内存(性能测试内存泄露怎么定位)

来源网友投稿 1246 2023-02-24

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。
本篇文章给大家谈谈性能测试之内存,以及性能测试内存泄露怎么定位对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享性能测试之内存的知识,其中也会对性能测试内存泄露怎么定位进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

怎样测试内存的性能?

1.在电脑桌面打开浏览器

2.输入www.baiducom进入百度主页

3.输入鲁大师进入鲁大师网页界面

4.点击立即下载

5.下载完成后在桌面打开鲁大师

6.进入鲁大师主界面

7.在最上面一栏找到性能测试

8.打开性能测试界面

9.点击开始评测

10.评测结束可获得综合能力得分

11.下面有对应性能测试之内存的性能评分

Android性能测试(内存、cpu、fps、流量、GPU、电量)——adb篇

3)查看进程列表:adb shell "ps",同时也能获取到应用的UID,方式如下(不需root权限):

u0_a开头的都是Android的应用进程,Android的应用的UID是从10000开始,到19999结束,可以在Process.java中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后面的数字就是该应用的UID值减去FIRST_APPLICATION_UID所得的值,所以,对于截图这个应用进程,它是u0_a155,按前面的规制,它的UID就是155 + FIRST_APPLICATION_UID = 10155。

VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS = RSS = PSS = USS

使用 adb shell "dumpsys meminfo -s <pakagename | pid"命令,输出结果分以下4部分:
PS:在apk内调用运行获取其他app的内存数据则需要root权限

adb命令:adb shell dumpsys gfxinfo <package | pid

正常情况下帧率应该在16.67ms左右,1秒60帧,执行结果如下:

详细计算方法如下:

还有一个命令是: adb shell dumpsys SurfaceFlinger --latency LayerName

其中LayerName在各个不同系统中获取的命令是不一样的
在Android 6系统直接就是SurfaceView
在Android 7系统中可以通过 dumpsys window windows | grep mSurface | grep SurfaceView 然后通过数据截取到
在Android 8系统中可以通过 dumpsys SurfaceFlinger | grep android包名获取到

执行命令结果如下:

计算方法比较简单,一般打印出来的数据是129行(部分机型打印两次257行,但是第一部分是无效数据,取后半部分),取len-2的第一列数据为end_time,取len-128的第一列数据为start_time
fps = 127/((end_time - start_time) / 1000000.0)
至于为啥要取第一列数据,这里不做过多介绍,欢迎参看这两篇文章
老罗的文章SurfaceView原理
Android性能测试之fps获取
至于为啥要处于1000000,因为命令打印出来的是纳秒单位,要转为毫秒进行计算,127就是因为命令一次打印出来127帧的数据而已

有两种方法可以获取
1) adb shell "top -n 5 | grep <package | pid" ,第三列就是实时监控的CPU占用率(-n 指定执行次数,不需root权限),这边top命令执行需要2到3s左右,一般可以采用busybox 的top命令执行,效率会快很多

2) adb shell "dumpsys cpuinfo | grep <package | pid"
两种方法直接区别在于,top是持续监控状态,而dumpsys cpuinfo获取的实时CPU占用率数据

adb命令:adb shell "dumpsys batterystats < package | pid" (Android 5.0后引入)
获取单个应用的耗电量信息,具体返回结果待研究

adb命令:adb shell "dumpsys battery"
出现信息解读:
AC powered:false 是否连接AC(电源)充电线
USB powered:true 是否连接USB(PC或笔记本USB插口)充电
Wireless powered:false 是否使用了无线电源
status: 1 电池状态,2为充电状态,其他为非充电状态
level:58 电量(%)
scale: 100. 电量最大数值
voltage: 3977 当前电压(mV)
current now: -335232. 当前电流(mA)
temperature:355 电池温度,单位为0.1摄氏度
adb 命令:adb shell "dumpsys< package | pid | grep UID" [通过ps命令,获取app的UID(安装后唯一且固定)]
adb shell cat /proc/uid_stat/UID/tcp_rcv [cat为查看命令,读取tcp_rcv获取应用接收流量信息(设备重启后清零)]
adb shell cat /proc/uid_stat/UID/tcp_snd [cat为查看命令,读取tcp_snd获取应用发送流量信息(设备重启后清零)]
计算流量消耗步骤:

或者还有一种方式获取应用流量消耗:

首先判断类型:
cat /sys/class/thermal/thermal_zone*/type

只有红框框出来的是有效的
cat /sys/class/thermal/thermal_zone*/temp
获取CPU温度

dumpsys battery | grep temperature 单位0.1摄氏度

获取/proc/stat文件内容(无权限限制)

总的cpu时间片是 total = user+nice+system+idle+iowait+irq+softirq
忙碌时间为 notidle = user+nice+system +iowait+irq+softirq
cpu使用率计算方法为,先取开始的total值和忙碌时间notidle,隔一段时间片,再取一次计算total2,notidle2, cpuuse = (notidle2 – notidle) * 100 / (total2 - total)%

PS:由于Android 8权限收紧,在Android 8系统手机内apk内读取文件内容为空,需要shell权限才可获取文件内容,下同

读/sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq文件的值,X不定,看是几核手机,scaling_cur_freq是否存在也不一定,需要判断

至于为啥不取cpuinfo_cur_freq文件的值,原因是android 6,7系统获取的时候,这个文件shell没有读取权限,需要root权限

参考文章: https://blog.csdn.net/long_zhimeng/article/details/45934899

Android 6,7系统可执行
dumpsys window windows | grep "mCurrentFocus"

执行结果一般为类似:
mCurrentFocus=Window{81caaa5 u0 com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity}
按照一定规则把com.tencent.mobileqq提取出来即可

直接apk内读取文件即可,不需要shell权限(支持到Android8)
Gpu使用率获取:会得到两个值,(前一个/后一个)*100%=使用率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpubusy

Gpu工作频率:
adb shell cat /sys/class/kgsl/kgsl-3d0/gpuclk
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq

Gpu最大、最小工作频率:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freq

Gpu可用频率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies

Gpu可用工作模式:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_governors

Gpu当前工作模式:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/governor

Android应用性能测试之CPU和内存实时监测

最近在做设备性能测试,下面和大家分享一下android应用程序的CPU和内存的性能测试。我们知道监测CPU和内存占用是一个实时变化的状态,我们可以通过Linux的资源监控命令来实现对android平台的资源实时监控。
要做到上面的测试环境需要具备以下几点:

(1)adb shell
(2)echo 3/proc/sys/vm/drop_caches(清除系统cache)
(3)top -d 1 | grep com.baidu.BaiduMap(以百度为例,每一秒打印一次资源利用情况)

由于使用了复合查询”管道符“的方式,所以必须拥有root权限,否则grep的命令无法识别。

在这里我们看到cmd并没有显示出所对应的列的标题,所以我们可以单独通过top命令来了解到:

至于以上各列的含义我不说我想大家也应该猜得到了,在这里仅说一下我们要用到的两个参数,其他的可以再网上查询了解:

|--CPU%:CPU占用率

|--RSS:实际占用的物理内存数,单位KB

我们可以针对不同的业务,打印出不同的“标签”,用于区别现在从事的那个业务,并为后期分析各业务模块中CPU和内存的占用以及对比使用。

内存检测是什么

内存是计算机不可或缺的组成部分,它能够帮助CPU寻找地址,然后对电脑其他部件的读写操作。内存错误或者故障会导致电脑出现很多的问题。所以我们需要对内存进行一点的检测,那么内存检测是什么意思呢?

内存检测的含义

内存是计算机不可或缺的组成部分,它能够帮助CPU寻找地址,然后对电脑其他部件的读写操作。而内存检测就是指对电脑的内存进行一定的检查和测试,看内存是否能正常的工作。

常用的内存检测的工具

1、鲁大师软件,鲁大师软件是一款比较专业的硬件检测的工具。它具有硬件检测、优化清理系统、温度监测以及性能测试等等的功能。鲁大师软件不仅能检测出内存的大小,还能检测出内存相关的其他信息。

2、Memtest86软件,Memtest86软件是一款国外的软件,它适用于大部分的系统。Memtest86可以非常直接加载到电脑中进行运作,在检测CPU型号、缓存性能以及内存容量、性能和故障等方面拥有非常强大的功能。Memtest86软件除了能检测电脑内存,还能检测手机内存。虽然Memtest86软件不是百分之百的检测出电子产品的内存,但是它的准确度要高于其他同类型的软件。

关于性能测试之内存和性能测试内存泄露怎么定位的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 性能测试之内存的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于性能测试内存泄露怎么定位、性能测试之内存的信息别忘了在本站进行查找喔。
上一篇:it运维 转型(it运维)
下一篇:it运维 重要性(it运维前景)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~