Android基于perfetto分析native内存泄露

Posted 清霜之辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android基于perfetto分析native内存泄露相关的知识,希望对你有一定的参考价值。

官方文档(可在Chome直接翻译) https://perfetto.dev/docs/data-sources/native-heap-profiler
示例 raw-trace 资源地址 https://download.csdn.net/download/CSqingchen/87321798
本文示例是windows,这里使用了python工具,在Linux和mac同样适用

  1. 首先安装python3环境,参见 https://www.python.org/downloads/

  2. 下载 perfetto ,地址在 https://github.com/google/perfetto
    后面需要用到这里的 perfetto\\tools\\heap_profile 本文放在了目录 D:\\tools\\perfetto

  3. 抓取一次某个应用的内存命令如下,注意提前关闭其它adb程序,如AS
    python D:\\tools\\perfetto\\tools\\heap_profile -n com.app.package.name
    这里只能抓到一次内存的快照,如果想连续记录多次内存的数据需要能Root手机

  4. 连续抓取多次内存快照
    adb shell killall -USR1 heapprofd 需要Root权限,上一步骤不要停止
    每执行一次,上一步会记录一次
    这里我上传了一份自己抓的数据,下载地址 https://download.csdn.net/download/CSqingchen/87321798

  5. 使用 perfetto 分析抓到的 raw-trace 文件,即从 https://ui.perfetto.dev/ 打开 raw-trace 文件

    通过点击 方块,对比不用时刻的内存。
    可以看到第一个大块有内存一直上升,结合其中的栈堆,分析并解决即可。
    下载资源 raw-trace.02 是解决问题后,抓取的tarce,可以看到问题已解决

  6. 相关问题思考

    • AndroidStudio Profile 也可以Dump内存,但内存分析没有这个直接
    • LeakCanary 也可以分析内存,主要是用来分析View视图,没法分析这个native内存的数据

以上是关于Android基于perfetto分析native内存泄露的主要内容,如果未能解决你的问题,请参考以下文章

(七) 下篇 Android 性能优化 Perfetto 详细介绍

(七) 中篇 Android 性能优化 Perfetto 文件分析

Perfetto for linux-使用 Perfetto 分析调度问题

Perfetto for linux-使用 Perfetto 分析调度问题

Android性能优化之Perfetto

Android性能优化之Perfetto