Android之内存溢出(Out Of Memory)的总结
图片越来越多,内存溢出已经成了不得不注意的问题了。
错误日志:11-03 12:36:54.812: ERROR/AndroidRuntime(5084): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
内存溢出主要由以下几种情况引起:
1.数据库的cursor没有关闭。
2.构造adapter没有使用缓存convertview。
3.调用registerReceiver后未调用unregisterReceiver()。
4.未关闭InputStream/OutputStream。
5.Bitmap使用后未调用recycle()。
6.Context泄漏。
前5种情况容易发现和解决,只要把该关的及时关闭,该调用的方法及时调用,就不会有太多问题,另外java里还有软引用帮助管理内存:
SoftReference<Bitmap> bitmap;
bitmap = new SoftReference<Bitmap>(pBitmap);
if(bitmap != null){
if(bitmap.get() != null && !bitmap.get().isRecycled()){
bitmap.get().recycle();
bitmap = null;
}
}
下面着重介绍Context泄漏。
这是一个很隐晦的内存泄露的情况。先看一个Android官网提供的例子:
-
private static Drawable sBackground;
-
-
@Overrid
文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。
原文链接:chenyu.blog.csdn.net/article/details/48806275
- 点赞
- 收藏
- 关注作者
评论(0)