开发者社区> 问答> 正文

OutOfMemory问题(OOM)解决方法

OutOfMemory问题(OOM)解决方法

展开
收起
保持可爱mmm 2020-03-27 20:48:26 836 0
1 条回答
写回答
取消 提交回答
  • 每个Android应用都有一个最大内存上限。超过这个上限,就会导致内存不足(OutOfMemory)。检查内存上限的方法:

    int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); Log.d("TAG", "Max memory is " + maxMemory + "KB"); 通常情况下,出现OOM,是由于应用中加载了大量的图片导致。鉴于此,有以下几种方式来减小应用对内存的使用: 合理压缩展示图片,比如一个100x100的控件里,如果加载一个1024x768的图片,不会让图片的展示效果更好,反而会增加OOM的风险。所以,合理的对图片进行压缩非常重要。 压缩完图片,但是应用里包含了太多的图,这种情况依然可能出现OOM。这种情况下,考虑使用内存缓存技术。根据每一屏要展示的图片数量,以及每个图片的大小,设定一个合理的缓存值,一般情况下不要超过1/8的最大内存值。如果图片不在显示区域,可以考虑将其进行回收,系统的垃圾回收器(GC)会认为这些内存不在被使用,从而对图片进行GC操作。这样会大大降低OOM的风险。 更多的OOM讨论,参见:http://blog.csdn.net/vshuang/article/details/39647167

    2020-03-27 20:49:07
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JVM的GC 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载