欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android內(nèi)存溢出及內(nèi)存泄漏原因進解析

 更新時間:2020年08月06日 11:31:16   作者:志不堅者智不達  
這篇文章主要介紹了Android內(nèi)存溢出及內(nèi)存泄漏原因解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

內(nèi)存溢出(Out Of Memory):Android系統(tǒng)中每一個應用程序可以向系統(tǒng)申請一定的內(nèi)存,當申請的內(nèi)存不夠用的時候,就產(chǎn)生了內(nèi)存溢出。

內(nèi)存泄漏:當某個對象不再被使用,即不再有變量引用它時,該對象占用的內(nèi)存就會被系統(tǒng)回收。當某個對象不再被使用,但是在其他對象中仍然有變量引用它時,該對象占用的內(nèi)存就無法被系統(tǒng)回收,從而導致了內(nèi)存泄漏。

當內(nèi)存泄漏過多時,可用內(nèi)存空間會減少,應用程序申請的內(nèi)存不夠用,就會導致內(nèi)存溢出。

內(nèi)存溢出原因:

1.內(nèi)存泄漏過多。

2.內(nèi)存中加載的數(shù)據(jù)量超過內(nèi)存的可用量。

3.集合類(用于存儲對象的引用)中有對對象的引用,使用完后未清空。

4.申請的內(nèi)存不夠。

5.死循環(huán)或者循環(huán)產(chǎn)生過多對象實例,導致大量內(nèi)存被消耗。

。。。

內(nèi)存泄漏原因:

1.資源對象沒有關閉:

(1)注冊廣播接收器后沒有調(diào)用unregisterReceiver()方法注銷廣播接收器。

(2)打開文件流之后沒有調(diào)用close()方法關閉文件流。

(3)數(shù)據(jù)庫游標cursor使用完后沒有調(diào)用close()方法關閉游標。

(4)圖片資源Bitmap使用完之后沒有調(diào)用recycle()方法回收。

。。。

2.生命周期長的對象持有生命周期短的對象的引用,導致生命周期短的對象內(nèi)存無法被回收:

(1)單例模式或者靜態(tài)成員變量的生命周期和應用程序的生命周期相等,當需要引用Context時,如果傳入的是Activity的Context,Activity需要被銷毀時就無法被回收。解決方法是傳入Application的Context,因為Application的Context生命周期等于應用程序的生命周期。

(2)非靜態(tài)內(nèi)部類(匿名內(nèi)部類、Handler等)默認持有外部類的引用,如果非靜態(tài)內(nèi)部類的對象實例生命周期比外部類生命周期長(比如非靜態(tài)內(nèi)部類定義了一個靜態(tài)的對象實例),外部類注銷時就無法被系統(tǒng)回收,從而導致內(nèi)存泄漏。解決方法是采用靜態(tài)內(nèi)部類+弱引用的方式。

總結(jié):內(nèi)存泄漏產(chǎn)生的原因主要有兩種:一種是資源對象在使用完后沒有進行關閉操作。另一種是生命周期長的對象引用了生命周期短的對象,導致生命周期短的對象即使不再使用但仍然無法被系統(tǒng)回收。根本原因在于需要被回收的內(nèi)存資源沒有被系統(tǒng)回收。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Flutter?Animation實現(xiàn)縮放和滑動動畫效果

    Flutter?Animation實現(xiàn)縮放和滑動動畫效果

    這篇文章主要為大家詳細介紹了Flutter?Animation實現(xiàn)縮放和滑動動畫效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Android源碼解析之屬性動畫詳解

    Android源碼解析之屬性動畫詳解

    在手機上去實現(xiàn)動畫效果算是件比較炫酷的事情,自Android 3.0版本開始,系統(tǒng)給我們提供了一種全新的動畫模式,屬性動畫(property animation),它的功能非常強大,彌補了之前補間動畫的一些缺陷,幾乎是可以完全替代掉補間動畫了。本文就詳細介紹了Android中的屬性動畫。
    2017-02-02
  • Android讀取properties配置文件的實例詳解

    Android讀取properties配置文件的實例詳解

    這篇文章主要介紹了Android讀取properties配置文件的實例詳解的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • RecyclerView下拉刷新上拉加載

    RecyclerView下拉刷新上拉加載

    本文主要介紹了RecyclerView下拉刷新上拉加載的具體實現(xiàn)代碼,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • Android中AsyncTask詳細介紹

    Android中AsyncTask詳細介紹

    這篇文章主要介紹了Android中AsyncTask詳細介紹,AsyncTask是一個很常用的API,尤其異步處理數(shù)據(jù)并將數(shù)據(jù)應用到視圖的操作場合,需要的朋友可以參考下
    2015-01-01
  • Android自定義日歷Calender代碼實現(xiàn)

    Android自定義日歷Calender代碼實現(xiàn)

    這篇文章主要為大家詳細介紹了Android自定義日歷Calender實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • android隨機生成圓形云標簽效果

    android隨機生成圓形云標簽效果

    這篇文章主要為大家詳細介紹了android隨機生成圓形云標簽效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android高效加載大圖、多圖解決方案 有效避免程序OOM

    Android高效加載大圖、多圖解決方案 有效避免程序OOM

    這篇文章主要為大家詳細介紹了Android高效加載大圖、多圖解決方案,有效避免程序OOM,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Android中TelephonyManager用法實例

    Android中TelephonyManager用法實例

    這篇文章主要介紹了Android中TelephonyManager用法,結(jié)合實例形式分析了TelephonyManager類的功能,使用技巧與相關注意事項,需要的朋友可以參考下
    2016-03-03
  • Android自定義View獲取注冊驗證碼倒計時按鈕

    Android自定義View獲取注冊驗證碼倒計時按鈕

    這篇文章主要介紹了Android自定義View獲取驗證碼倒計時按鈕的制作方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評論