android应用内存占用测试(每隔一秒打印procrank的信息)

1.内存占用

    对于智能手机而言,内存大小是固定的;因此,如果单个app的内存占用越小,手机上可以安装运行的app就越多;或者说app的内存占用越小,在手机上运行就会越流畅。所以说,内存占用的大小,也是考量app性能的一个重要指标

 

2.原理说明

对于一个app,我们可以关注它在3种状态下的内存占用情况:

空负荷————app已经在后台运行,但是用户没有使用;

中负荷————app在前台运行,用户进行了少量操作;

满负荷————用户持续频繁大量操作,app接近饱和状态运行。

然而,除了第一种情况,其它两种的主观性很强,不是很容易区分。正常产品测试的时候,只要验证后台运行(5~10分钟为宜)和用户持续频繁大量操作(10~15分钟为宜)这两种情况下就可以了。

这样一来,就变成了如何持续统计并记录app所占内存的问题。Procrank工具可以实现这个功能。

 

3.procrank的安装

1)下载procrank压缩包,下载地址:http://download.youkuaiyun.com/download/yincheng886337/9433538

2)解压,将procrank文件push到手机的  /system/xbin目录下;   

     命令:adb push procrank /system/xbin

     将procmem文件push到手机的  /system/xbin目录下;

     命令:adb push procmem /system/xbin

     将libpagemap.so文件push到手机的  /system/lib目录下;

     命令:adb push libpagemap.so /system/lib

3)进入adb shell,获取root权限,分别给procrank、procmem、libpagemap.so三个文件777权限,如下:

     chmod 777 /system/xbin/procrank

     chmod 777 /system/xbin/procmem

     chmod 777 /system/lib/libpagemap.so

     如果push不进三个文件或者修改不了三个文件的权限,那重新挂载一下system,再修改三个文件的权限,如下:

     mount   -o  remount,rw    /system 

 

4.  procrank各项值解析

     进入adb shell,获取root权限,输入命令:procrank即可,如下图:

     

     VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
     RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
     PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
     USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

     VSS和USS对查看某一进程自身的内存状况没什么作用,因为他们包含了共享库的内存使用,而往往共享库的资源占用比重是很大的,这样就稀释了对Process自身创建内存波动。

     我们一般观察Uss来反映一个进程的内存使用情况,Uss 的大小代表了只属于本进程正在使用的内存大小,这些内存在此进程被杀掉之后,会被完整的回收掉。

     USS是一个非常有用的数字,因为它揭示了运行一个特定进程的真实的内存增量大小,如果进程被终止,USS就是实际被返还给系统的内存大小。USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。

   怀疑某个程序有内存泄露可以查看USS值是否一直有增加。

   

   

 

5. 写脚本每隔一秒自动打印procrank的信息

1)首先创建一个cmd.txt文件,写入需要执行的adb shell 命令,如:

 

2)写python脚本,如下:

复制代码

import os,sys,time
for i in range(500):
    os.popen("adb shell <cmd.txt")   #运行cmd.txt中的命令
    step1=os.popen("adb  pull /data/test/t1.txt F:/100python/log102101.txt")   #把生成的t1.txt文件下载到本地
    fo = open("log102101.txt", 'r+')
    input = fo.read()
    fo2 = open("mem.txt", 'r+')
    fo2.seek(0, os.SEEK_END)    #定位到mem.txt文件尾部
    fo2.write(input)    #写入t1.txt的内容
    fo.close()
    fo2.close()
    time.sleep(1)   #休息一秒,再进入下一个循环,也就是每隔一秒打印一次procrank的信息
print "ok"    #运行完毕的标志

复制代码

 注:cmd.txt文件,python脚本,mem.txt都存放在同一目录下

 

3)运行monkey,同时执行写好的脚本

    生成的mem.txt文件如下:

   

 附monkey命令:

adb shell monkey -p com.waboon.test --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-touch 30 -v -v -v --throttle 200 1000

 

4)mem.txt文件中第五列的值是USS,将mem.txt文件用notepad打开,再选择第五列的值复制到excel中生成图表,如下:

5)分析USS的值,查看是否有内存泄露。

Vivado2023是一款集成开发环境软件,用于设计和验证FPGA(现场可编程门阵列)和可编程逻辑器件。对于使用Vivado2023的用户来说,license是必不可少的。 Vivado2023的license是一种许可证,用于授权用户合法使用该软件。许可证分为多种类型,包括评估许可证、开发许可证和节点许可证等。每种许可证都有不同的使用条件和功能。 评估许可证是免费提供的,让用户可以在一段时间内试用Vivado2023的全部功能。用户可以使用这个许可证来了解软件的性能和特点,对于初学者和小规模项目来说是一个很好的选择。但是,使用评估许可证的用户在使用期限过后需要购买正式的许可证才能继续使用软件。 开发许可证是付费的,可以永久使用Vivado2023的全部功能。这种许可证适用于需要长期使用Vivado2023进行开发的用户,通常是专业的FPGA设计师或工程师。购买开发许可证可以享受Vivado2023的技术支持和更新服务,确保软件始终保持最新的版本和功能。 节点许可证是用于多设备或分布式设计的许可证,可以在多个计算机上安装Vivado2023,并共享使用。节点许可证适用于大规模项目或需要多个处理节点进行设计的用户,可以提高工作效率和资源利用率。 总之,Vivado2023 license是用户在使用Vivado2023时必须考虑的问题。用户可以根据自己的需求选择合适的许可证类型,以便获取最佳的软件使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值