-
首先安装python3环境,参见 https://www.python.org/downloads/
-
下载 perfetto ,地址在 https://github.com/google/perfetto
后面需要用到这里的 perfetto\tools\heap_profile
本文放在了目录 D:\tools\perfetto
-
抓取一次某个应用的内存命令如下,注意提前关闭其它adb程序,如AS
python D:\tools\perfetto\tools\heap_profile -n com.app.package.name
这里只能抓到一次内存的快照,如果想连续记录多次内存的数据需要能Root手机
-
连续抓取多次内存快照
adb shell killall -USR1 heapprofd
需要Root权限,上一步骤不要停止
每执行一次,上一步会记录一次
这里我上传了一份自己抓的数据,下载地址 https://download.csdn.net/download/CSqingchen/87321798
-
使用 perfetto
分析抓到的 raw-trace
文件,从 https://ui.perfetto.dev/ 打开 raw-trace
文件
通过点击 方块,对比不用时刻的内存。
可以看到第一个大块有内存一直上升,结合其中的栈堆,分析并解决即可。
下载资源 raw-trace.02
是解决问题后,抓取的tarce,可以看到问题已解决
-
相关问题思考
- AndroidStudio Profile 也可以Dump内存,但内存分析没有这个直接
- LeakCanary 也可以分析内存,主要是用来分析View视图,没法分析这个native内存的数据