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總結
以上是生活随笔為你收集整理的Android之内存溢出(Out Of Memory)的总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android之px 与 dp, sp换
- 下一篇: Android之解析XML总结(SAX、