MAT(Eclipse的内存分析器) - 如何看待从内存转储位图(MAT (Eclipse Memo

2019-06-18 10:29发布

我分析我的Android应用程序有帮助的内存使用的Eclipse内存分析器 (也称为MAT)。 有时候,我能找到的奇怪情况android.graphics.Bitmap类,利用堆的很大一部分。 问题是我无法找到该位图的来源,没有文件名 ,不RESOURCEID,什么都没有。 所有的信息我能找到的位图如下:

有一个字段mBuffer与图像的一个像素阵列,我假设。 但它在一些内部的Android格式,而不是PNG。

:我如何可以查看从内存转储此位图表示的图像?

Answer 1:

我已经找到一种方法来查看这样的位图:

  • 首先,你需要下载并安装GIMP
  • 接下来,找到你的Bitmap在MAT对象,右键单击mBuffer场,在弹出菜单中选择“复制” - >“保存值到文件”菜单项,然后保存这个数组的值某些文件
  • 给予延长.data到该文件
  • 推出GIMP,选择“文件” - >“打开”,选择您的.data文件并单击打开按钮
  • “从原始数据载入图像”对话框将会出现。 在这里,您需要设置正确的参数为位图
  • 首先,选择“图像类型”“RGB阿尔法”(大多数Android资源有这样的图像类型,但您可能需要与其他图像类型的实验)
  • 第二,设置正确的宽度高度的位图(正确的尺寸,可以在内存转储中)

在这一点上,你应该已经看到原始图像的预览。 如果你没有,你可以尝试“从原始数据载入图像”对话框中改变一些其他参数。

注:获得的宽度和图像的高度,你可以看看mWidthmHeight领域在MAT中的属性部分中的问题显示在图像。



Answer 2:

您可以将内存使用来自MAT到PNG转储ImageMagick的命令行。

MAT相关Bitmap对象右击mBuffer字段,然后选择“复制” - >“保存值到文件”,名称与一个文件.rgba扩展。

你需要从注意位图的宽度和高度mWidthmHeight领域,你可以在Bitmap对象看。

ImageMagick安装命令行工具(Ubuntu的apt-get install imagemagick ),您发出convert以下参数的命令。

convert -size 'width'x'height' -depth 8 filename.rgba filename.png

例如

 convert -size 680x1209 -depth 8 phone_decor.rgba phone_decor.png

您可以通过查看生成的PNG文件EOG ,像eog phone_decor.rgbaUbuntu轻松。



文章来源: MAT (Eclipse Memory Analyzer) - how to view bitmaps from memory dump