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-sampling
、bitmap configurations
和 resizing
是减小 bitmap
大小的有效选项。
尽管如此,管理内存分配始终是一个好主意。特别是像 Managing Bitmap Memory
和 Caching Bitmaps
这样的东西。
这通常归结为
1- Version(s) of Android you are targeting
2- Memory vs. Disk cache
我在我的 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-sampling
、bitmap configurations
和 resizing
是减小 bitmap
大小的有效选项。
尽管如此,管理内存分配始终是一个好主意。特别是像 Managing Bitmap Memory
和 Caching Bitmaps
这样的东西。
这通常归结为
1- Version(s) of Android you are targeting
2- Memory vs. Disk cache