1

我在我的 Android 应用程序中使用了一个 jpeg,它占用了 1.6 MB 的磁盘空间(在 OSX 上)。我注意到应用日志中的垃圾收集器警告,并在 Android Studio 中进行了堆转储。在 36.5 MB 的保留堆大小中,我的主页片段(这是带有 jpeg 的那个)占用了 36 MB。

我在 Memory Analyzer Tool (MAT) 中加载了堆转储,并看到一个 android.graphics.Bitmap 在堆中占用了 36 MB 的空间。它的属性视图不显示文件名,但尺寸与 1.6 MB jpeg 的尺寸相匹配。

垫一般视图

MAT 属性视图

磁盘上占用不到 2 MB 的图像如何在 Android 应用程序的堆上占用 36 MB?

谢谢

4

2 回答 2

1

JPEG 是一种压缩图像格式。要渲染它,Android 需要对其进行解压缩。

于 2020-05-26T18:09:24.740 回答
0

正如@CommonsWare 指出的那样,bitmap显示的不是压缩格式,在你的情况下是JPEG.

但至于如何解决这个明显的问题;bitmap down-samplingbitmap configurations和是减小尺寸resizing的有效选项。bitmap

尽管如此,管理内存分配始终是一个好主意。特别像Managing Bitmap Memoryand之类的东西Caching Bitmaps

这通常归结为

1- Version(s) of Android you are targeting

2- Memory vs. Disk cache
于 2020-05-26T18:30:34.843 回答