本文是 MAT 工具使用系列的第二篇,这个系列共三篇,详细介绍了如何使用 MAT 来分析内存问题,既可以是 Java 应用的内存问题,也可以是 Android 应用的内存问题:
本文介绍的是从 MAT 里手工还原 Bitmap 原图的旧排查技巧,适合在离线 heap 里确认“到底是哪张图”被错误持有。现在排查图片内存问题时,第一步通常不是直接打开 MAT,而是先用 Android Studio Memory Profiler 的 heap dump/retained size/reference 视图确认 Bitmap、BitmapDrawable 或图片缓存的持有链;如果问题涉及 Native Bitmap、纹理、图片库缓存或系统内存压力,还需要结合 dumpsys meminfo、Perfetto/native heap profiling、图片库自身缓存统计一起判断。MAT 仍然可以作为最后的离线取证工具,而不是默认入口。
在使用MAT查看应用程序内存使用情况的时候,我们经常会碰到Bitmap对象以及BitmapDrawable$BitmapState对象,而且在内存使用上,Bitmap所占用的内存占大多数.在这样的情况下, Bitmap所造成的内存泄露尤其严重, 需要及时发现并且及时处理.在这样的需求下, 当我们在MAT中发现和图片相关的内存泄露的时候, 如果能知道是那一张图片,对分析问题会有很大的帮助.
本文就介绍如何将MAT中的Bitmap数组对象还原成一张图片。

