我在Android应用程序中使用的jpeg占用磁盘上1.6 MB(在OSX上)。我在应用程序日志中注意到垃圾收集器警告,并在Android Studio中进行了堆转储。在36.5 MB的保留堆大小中,我的主页片段(这是带有jpeg的片段)占用了36 MB。
我在内存分析器工具(MAT)中加载了堆转储,并看到android.graphics.Bitmap占用了堆中36 MB的空间。它的属性视图未显示文件名,但尺寸与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