android如何避免oom

来源:互联网 发布:淘宝买家怎样增加信誉 编辑:程序博客网 时间:2024/05/18 02:20

1>先排查内存泄露, handler ,全局变量,属性动画,service,广播,单例等可能导致内存泄露的问题排除掉,因为内存泄露会增加oom的概率,使用LeakCannary排查内存泄露。

2>启动一个定时器线程每隔3秒钟检查一下当前内存的使用情况

untime.getRuntime().maxMemory();    Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
  • 操作方式
    我们可以定期(前台每隔3分钟)去得到这个值,当我们这个值达到危险值时(例如80%),我们应当主要去释放我们的各种cache资源(bitmap的cache为大头),同时显示的去Trim应用的memory,加速内存收集。

WindowManagerGlobal.getInstance().startTrimMemory(TRIM_MEMORY_COMPLETE);
其他例如使用large heap、inBitmap、SparseArray、Protobuf等不再一一细述,对代码采用优化--埋坑--优化--埋坑的方式并不推荐。我们应该着力于建立一套合理的框架与监控体系,能及时的发现诸如bitmap过大、像素浪费、内存占用过大、应用OOM等问题。

0 0
原创粉丝点击