标签:内存 sha 移动 一个 现象 通信 参数 wait memory
方法一:Android系统自带统计功能(总体流量数值)
Proc/uid_stat/{UID}/tcp_snd和tcp_rcv
具体步骤:
(1)通过包名获取app的PID;
(2)再访问/proc/{PID}/status文件查找app对应的UID;
(3)通过UID号加上100000号查看接收和发送的流量文件
方法二:Wireshark+tcpdump
./tcpdump -s 0 -w ./t1.pcap -v
方法三:GT(随身调)工具(直接调用android的api):
TrafficStats类是Android提供的一个流畅统计类,可以统计手机开机累计到现在使用的流量,也可以统计某个或者多个进程或者应用所使用流量,包括Wi-Fi和移动数据GPRS。
GT使用TrafficStats.getUidTxBytes(uid)来获取流量数据(该方法号称是获取到指定 uid 发送流量的总和,但实测情况是只有 tcp 层的流量)。
GT(随身调)是APP的随身调试平台,是直接运行在手机上的IDTE。可以使用GT对APP进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等)、开发日志查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等。
Battery Historian:Google提供的电量分析工具,Android 5.0以上支持
adb shell dumpsys battery //读取电量和温度
adb shell dumpsys batterystats --reset //重置电池统计信息
adb shell dumpsys batterystats > batterystats.txt // 获取电池统计信息
python historian.py batterystats.txt > batterystats.html //生成报告
/proc 文件系统是一个伪文件系统,只存在内存中而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。
从proc文件可以获取:系统、进程、线程的CPU时间片使用情况,所以两次采集时间片的数据就可以获取进程CPU占用率。
CPU占用率=(进程T2-进程T1)/(系统T2-系统T1)
进程总CPU时间
总CPU时间 totalCPUTime=user+nice+system+idle+iowait+irq+softird
processCPUTime=utime+stime+cutime+cstime
线程总CPU时间 threadCPUTime=utime+stime+cutime+cstime
获取系统CPU时间片:读取proc/stat
获取进程CPU时间片:proc/pid/stat
线程时间片:/proc/pid/task/tid/stat
流畅度:Android系统每隔16.7ms发出垂直同步信号(VSync信号)(1000ms/60=16.67ms)触发对UI进行渲染。流畅画面需要60帧/s,为了能够实现60帧/s,意味着计算渲染的大多数操作必须在16.7ms完成。
当绘帧间隔超过16.7ms,垂直同步机制会让显示器硬件等待GPU完成栅格化渲染操作,我们就可以说此时掉帧了,也会造成用户直接感官的卡顿。
1秒内vSync信号的次数定义为流畅值,即SM。
卡顿分类:
Android的帧绘制流程是:CPU主线程图像处理->GPU进行光栅化->显示帧。APP产生掉帧的情况大多是由“CPU主线程图像处理”这一步超负载引起。
页面启动时长:
标签:内存 sha 移动 一个 现象 通信 参数 wait memory
原文地址:https://www.cnblogs.com/amyzhu/p/9148146.html