JPEG占用预期的20倍空间

问题描述 投票:1回答:2

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

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

MAT General View

MAT Attribute View

磁盘上占用少于2 MB的映像如何在Android应用程序的堆上占用36 MB?

谢谢

android heap-dump android-graphics
2个回答
1
投票

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


0
投票

@ 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
© www.soinside.com 2019 - 2024. All rights reserved.