目录
1.GPU渲染工具:GPU-RENDERING-PROFILE
VSS---->Virtual Set Size 虚拟耗用内存(包含共享库占用的内存).
RSS---->Resident Set Size 实际使用物理内存(包含共享库占用的内存).
PSS---->Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存).
![](/qrcode.jpg)
adb shell dumpsys procstats --hours 1
adb shell dumpsys meminfo com.xueqiu.android
1.显示网络流量:adb shell dumpsys netstats(模拟器无效)
adb shell dumsys package com.xueqiu.android | findstr userId
adb shell dumpsys netstats | findstr userId
1.CPU与GPU分析
![](https://img-blog.csdnimg.cn/44ccd50eb5cc467baed1127027d474be.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
cpu速度比gpu快,cpu处理好的数据放入某类中间件中(如OpenGL,类似消息队列),gpu在处理完上一次绘制任务后,按需从队列中取下一个任务处理,解决了cpu与gpu处理速度不一致的问题.
所以分析cpu可以从分析GPU入手,gpu如果绘制工作处理无误,那么说明cpu将图形数据处理好后传给GPU的工作也没问题.
1.GPU渲染工具:GPU-RENDERING-PROFILE
Android开发者工具提供性能调优工具,实现GPU渲染分析:
![](https://img-blog.csdnimg.cn/f4bb8974df0f4dba8eb982140d8e6819.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_18,color_FFFFFF,t_70,g_se,x_16)
2.GPR显示内容说明:
检查 GPU 渲染速度和过度绘制了解设备上的开发者选项如何帮助您直观地查看您的应用可能会在何处遇到问题。
https://developer.android.google.cn/topic/performance/rendering/inspect-gpu-rendering
a.绘制每一帧所消耗的时间.
b.不同颜色代表UI绘制的不同阶段.
c.绿色横线代表16.6ms绘制时间基准线.
d.GPR会统计并显示App最近运行的128帧.
e.蓝色线较高时可能是因为onDraw函数中的绘制逻辑过于复杂.
f.红色线较高可能是因为view过于复杂或重复提交,导致OpenGL负荷过高.
g.橙色线较高时CPU在等待GPU完成工作,说明GPU任务太多或在进行复杂的view绘制.
由上可知,当app运行时,操作若出现较少数的帧超过16.6ms的绘制,用户基本察觉不到,若超过16.6ms的帧数较多时,用户就能感受到掉帧卡顿了.
_____________________________________________________________________________
2.MEM统计分析
1.内存常用名词解析:
VSS---->Virtual Set Size 虚拟耗用内存(包含共享库占用的内存).
RSS---->Resident Set Size 实际使用物理内存(包含共享库占用的内存).
PSS---->Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存).
各进程的PSS之和,就是系统内存的使用量
USS---->Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存).
VSS>=RSS>=PSS>=USS
2.查看内存使用情况:
dumpsys命令是用于打印出当前系统所有的service信息.dumpsys servicename就是查看对应的某个service的相关信息.
查看1小时内的系统各进程内存使用情况
adb shell dumpsys procstats --hours 1
输出字段解析:
百分比:表示在时间段内,进程的各种状态下的消耗.100%表示进程一直处于运行中.
TOTAL:进程的综合占用情况.
Imp Fg:加载到前台.
Service:表示是否是服务.
Persistent:标识是否一直驻留在内存中,与Service一样,表示内存进驻的级别.
Top:表示是否是顶层进程.
Receiver:表示是否是广播进程.
查看指定进程的mem
adb shell dumpsys meminfo com.xueqiu.android
由上可知,同一时刻,系统中会同时存在多个进程在运行(多个TOTAL:100%),没法准确分析,所以一般我们都是采用不同版本的内存使用情况做对比,例如V2.2.0版本与V2.3.0版本做对比,以此分析App的内存使用情况.
_____________________________________________________________________________
3.网络流量分析
1.显示网络流量:adb shell dumpsys netstats(模拟器无效)
2.找到对应App的userId
adb shell dumsys package com.xueqiu.android | findstr userId
adb shell dumpsys netstats | findstr userId
查看相关应用的流量情况
set=DEFAULT 表示前台网络使用情况
set=BACKGROUND 表示后台使用情况
set=ALL 表示前后台使用情况
tag=0x0 表示与流量关联的套接字代码.
rb/rp 表示在响应时间间隔内接收的字节数和数据包数.
tb/tp 表示在响应时间间隔内放的字节数和数据包数.