最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

當(dāng)內(nèi)存泄漏過多時(shí),可用內(nèi)存空間會(huì)減少,應(yīng)用程序申請(qǐng)的內(nèi)存不夠用,就會(huì)導(dǎo)致內(nèi)存溢出。

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

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

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

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

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

5.死循環(huán)或者循環(huán)產(chǎn)生過多對(duì)象實(shí)例,導(dǎo)致大量?jī)?nèi)存被消耗。

。。。

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

1.資源對(duì)象沒有關(guān)閉:

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

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

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

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

。。。

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

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

巴马| 连南| 灵川县| 闽侯县| 竹山县| 宕昌县| 绥中县| 乌拉特前旗| 阳城县| 平阳县| 长治市| 阳曲县| 滨海县| 东乌珠穆沁旗| 信宜市| 宜兰县| 辽中县| 石河子市| 黑河市| 金秀| 南召县| 九台市| 个旧市| 光山县| 娄烦县| 伽师县| 宾川县| 莫力| 钦州市| 临江市| 兴义市| 惠安县| 闻喜县| 黔江区| 道真| 邵武市| 得荣县| 林甸县| 平远县| 东丽区| 顺昌县|