Android内存优化之三:打开MAT中的Bitmap原图
来源:互联网 发布:宽带网络校校通 编辑:程序博客网 时间:2024/04/30 02:42
在使用MAT查看应用程序内存使用情况的时候,我们经常会碰到Bitmap对象以及BitmapDrawable$BitmapState对象,而且在内存使用上,Bitmap所占用的内存占大多数.在这样的情况下, Bitmap所造成的内存泄露尤其严重, 需要及时发现并且及时处理.在这样的需求下, 当我们在MAT中发现和图片相关的内存泄露的时候, 如果能知道是那一张图片,对分析问题会有很大的帮助.
本文就介绍如何将MAT中的Bitmap数组对象还原成一张图片。
Bitmap对象如图:
导出Bitmap原始数据
在MAT中打开Dominator Tree视图 , 选择一个Bitmap对象 , 查看此时右边的Inspector窗口,内容如下图:
这个视图中,可以看到这个Bitmap的一些基本的信息: mBuffer, mHeight, mWidth , mNativeBitmap等, 宽和高的值我们一会需要用的到 .
mBuffer的定义在Bitmap.java中:
123456789
/** * Backing buffer for the Bitmap. * Made public for quick access from drawing methods -- do NOT modify * from outside this class * * @hide */@SuppressWarnings("UnusedDeclaration") // native code onlypublic byte[] mBuffer;
其值是保存在byte数组中的, 我们需要的就是这个byte数组中的内容. 在Inspector窗口的mBuffer这一栏或者Dominator Tree视图的Bitmap这一栏点开下一级,都可以看到这个byte数组的内容. 鼠标右键选择Copy –>Save Value To File. 弹出如下对话框:
选择存储路径和文件名,这里需要注意的是,文件名一定要以 .data为后缀,否则无法正常使用,切记.
打开原始资源数据
Linux
这时需要借助Linux上强大的图片应用:GIMP,没安装的可以去安装一下. 安装好之后, 打开GIMP,选择文件-打开.选择我们上一步导出的.data文件(比如image.data),然后会出现如下图的属性框:
图像类型这一栏选择RGB Alpha, 宽度和高度必填, 其值可以在MAT中查看到,第一步的时候有说到这个值的位置, 其他的选择默认即可,然后点击打开. GIMP就会把这个文件打开.
Mac && Windows
Mac和Windows可以选择使用PhotoShop作为打开的工具, 和Linux唯一不同的地方在于. 保存的文件的格式需要以.raw结尾 (比如image.raw),选择深度为32位. 其余的和Linux相同.
另外GIMP也有Mac、Windows版本,建议大家在各个平台都使用GIMP,这样学习成本比较低,而且GIMP为免费软件,使用起来功能也非常多。
本文标题:Android内存优化之三:打开MAT中的Bitmap原图
文章作者:Gracker
- Android内存优化之三:打开MAT中的Bitmap原图
- Android内存优化之三:打开MAT中的Bitmap原图
- Android内存优化之三:打开MAT中的Bitmap原图
- Android内存优化之三:打开MAT中的Bitmap原图 (a
- Android内存优化利器:MAT打开内存Bitmap(Windows版本)
- 打开MAT工具中Bitmap的原图
- Android内存优化之Bitmap
- Android内存优化工具(三)MAT
- android内存优化工具篇之MAT
- Android性能优化之MAT内存检测
- Android内存优化三:对Bitmap的内存优化
- Android内存优化三:对Bitmap的内存优化
- android mat内存优化
- 用GIMP查看MAT中bitmap原图
- Android Bitmap内存优化
- Android Bitmap内存优化
- android内存优化--Bitmap
- Android 内存优化 Bitmap
- visual DLL
- js获取前几天日期
- Android内存优化之一:MAT使用入门
- SpringMVC基础-@ModelAttribute注解&PUT请求方式修改数据
- Android内存优化之二:MAT使用进阶
- Android内存优化之三:打开MAT中的Bitmap原图
- gsoap 的教程和使用
- Tuning options for SQL Server when running in high performance workloads
- English Summary in January 2016
- 2016太原UI设计师郭文军讲ui界面设计中iPhone官方字体
- angularjs 指令(directive)详解(1)
- Codevs1080 线段树练习
- Hadoop WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using b
- unity3D 插件plugins