JPEG 按预期占用约 20 倍 Space

JPEG Taking up ~20x Space as Expected

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

我在内存分析器工具 (MAT) 中加载了堆转储,看到 android.graphics.Bitmap 在堆中占用了 36 MB 的 space。它的属性视图不显示文件名,但尺寸与 1.6 MB jpeg 的尺寸相匹配。

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

谢谢

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

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

但是如何解决这个显而易见的问题; bitmap down-samplingbitmap configurationsresizing 是减小 bitmap 大小的有效选项。

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

这通常归结为

1- Version(s) of Android you are targeting

2- Memory vs. Disk cache