Android性能-內存泄漏

泄漏原因:

  • 單例造成的內存泄漏
public class AppManager {
    private static AppManager instance;
    private Context context;
    private AppManager(Context context) {
        this.context = context;
    }
    public static AppManager getInstance(Context context) {
        if (instance != null) {
            instance = new AppManager(context);
        }
        return instance;
    }
}
  • 非靜態(tài)內部類(匿名類等)創(chuàng)建靜態(tài)實例造成的內存泄漏 Handler/Thread/AsyncTas等
    可以使用靜態(tài)內部類+弱引用避免泄漏
public class MainActivity extends AppCompatActivity {

    private static TestResource mResource = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(mResource == null){
            mResource = new TestResource();
        }
        //...
    }
    
    class TestResource {
    //...
    }
}
  • 資源未關閉造成的內存泄漏

對于使用了BraodcastReceiver,ContentObserver,F(xiàn)ile,Cursor,Stream,Bitmap, 屬性動畫或循環(huán)動畫等資源,應該在Activity銷毀時及時關閉或者注銷,否則這些資源將不會被回收,從而造成內存泄漏。
其中Bitmap使用不當,bitmap對象使用的內存較大,當我們不再使用Bitmap對象的時候一定要執(zhí)行recycler方法,這里需要指出的是當我們在代碼中執(zhí)行recycler方法,Bitmap并不會被立即釋放掉,其只是通知虛擬機該Bitmap可以被recycler了。

  • 集合容器中的內存泄露
    我們通常把一些對象的引用加入到了集合容器(比如ArrayList)中,當我們不需要該對象時,并沒有把它的引用從集合中清理掉,這樣這個集合就會越來越大。如果這個集合是static的話,那情況就更嚴重了。
    解決方法:在退出程序之前,將集合里的東西clear,然后置為null,再退出程序。

  • 靜態(tài)變量持有的應用
    view持有context的

https://blog.csdn.net/north1989/article/details/51999920
https://blog.csdn.net/u013495603/article/details/50696170
https://blog.csdn.net/mxm691292118/article/details/51020023

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 本系列出于AWeiLoveAndroid的分享,在此感謝,再結合自身經(jīng)驗查漏補缺,完善答案。以成系統(tǒng)。 Andro...
    濟公大將閱讀 1,998評論 2 10
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,062評論 25 709
  • 在 Java 中,內存的分配是由程序完成的,而內存的釋放則是由 Garbage Collecation(GC) 完...
    Shawn_Dut閱讀 6,144評論 3 28
  • 你的笑是溫柔 你的眼神是溫柔 你的話是溫柔 愛是溫柔 你的心是溫柔 你的明天是溫柔 你的手是溫柔 愛是溫柔 昨天的...
    UnaFung閱讀 241評論 0 1
  • 我將自己深深埋在厚土里 當我悶夠了 便渴望自由的呼吸 可等我漂浮在云端之后 我仍不滿意 我想要的 不過是一次真正的...
    秋高觀淡云閱讀 191評論 4 3

友情鏈接更多精彩內容