最近由于业务需要,遗留大量需要分析native相关内存的问题。里面有ANR、OOM、以及其他流畅性相关的问题。查找相关日志,发现里面涉及到很多linux系统原理相关的知识,以及一些常用的性能优化命令。对此一直是边百度边理解,导致很多是一直半解的状态。不甘于此,打算系统性对这块做一个了解,以求在解决相关优化问题时能够得心应手。
android中常用性能分析命令
1、ps 命令
查看相关线程进程信息
常用:ps -T 【pid】
https://www.cnblogs.com/mlZhao/p/12435987.html
2、cat /proc/[pid]/schedstat
查看cpu的上下文切换频率次数
三个值: 累计运行物理时间 累计在就绪队列里的等待时间 主动切换和被动切换的累计次数
3、proc/[pid]/status
查看相关 内存占用信息(虚拟,物理) 线程数, 上下文切换的详细信息(自愿和非自愿)
4、proc/[pid]/stat
cpu相关信息 可读性很差
4.1 proc/cpuinfo
查看系统cpu个数
5、dumpsys (以下列举几个)
一、dumpsys meminfo (进一步了解相关)
二、dumpsys cpuinfo
https://blog.youkuaiyun.com/lipanpan1030/article/details/108118685
cpu相关信心,使用信息,和iow、irq 、softirq
top 也可以分析部分cpu占用信息。
6,am(进一步了解相关)
7、pm(进一步了解)
8、虚拟机内存相关 例如:
$adb shell getprop dalvik.vm.heapgrowthlimit
192m
$adb shell getprop dalvik.vm.heapsize
512m
$adb shell getprop dalvik.vm.heapstartsize
16m
9、页面流畅度帧率相关
adb shell dumpsys SurfaceFlinger
adb shell dumpsys gfxinfo 包名 framestats