2021-01-27

什么是內(nèi)存泄漏

1.內(nèi)存泄漏的原因

2.為什么有內(nèi)存泄漏

3.內(nèi)存泄漏都有哪些

1.內(nèi)存泄漏的原因

android 系統(tǒng)為每個(gè)應(yīng)用分配的內(nèi)存是有限的州丹,當(dāng)一個(gè)對(duì)象已經(jīng)不需要再使用了使鹅,

本該被回收時(shí)露戒,而有另外一個(gè)正在使用的對(duì)象持有它的引用從而導(dǎo)致它不能被回收贺嫂,

這導(dǎo)致本該被回收的對(duì)象不能被回收而停留在堆內(nèi)存中琅拌,這就產(chǎn)生了內(nèi)存泄漏。

內(nèi)存泄漏會(huì)使我們的應(yīng)用隨著時(shí)間不斷增加,造成應(yīng)用OOM錯(cuò)誤掂林,使應(yīng)用崩潰。

2.為什么有內(nèi)存泄漏

一個(gè)不會(huì)被使用的對(duì)象,因?yàn)榱硪粋€(gè)正在使用的對(duì)象持有該對(duì)象的引用,導(dǎo)致它不能正常被回收,而停留在堆內(nèi)存中,內(nèi)存泄漏就產(chǎn)生了

Android系統(tǒng)為每個(gè)應(yīng)用分配的內(nèi)存是有限的,內(nèi)存泄漏會(huì)使我們的應(yīng)用內(nèi)存隨著時(shí)間不斷的增加,造成應(yīng)用OOM(Out Of Memory)錯(cuò)誤,使應(yīng)用崩潰.

3.內(nèi)存泄漏都有哪些

1.集合類泄漏

(集合類如果僅僅有添加元素的方法坝橡,而沒(méi)有相應(yīng)的刪除機(jī)制泻帮,導(dǎo)致內(nèi)存被占用。

如果這個(gè)集合類是全局性的變量 (比如類中的靜態(tài)屬性计寇,全局性的 map 等即有靜態(tài)引用或 final 一直指向它)锣杂,

那么沒(méi)有相應(yīng)的刪除機(jī)制,很可能導(dǎo)致集合所占用的內(nèi)存只增不減番宁。)

2.單例造成的內(nèi)存泄漏

由于單例的靜態(tài)特性使得其生命周期跟應(yīng)用的生命周期一樣長(zhǎng)元莫,所以如果使用不恰當(dāng)?shù)脑挘苋菀自斐蓛?nèi)存泄漏贝淤。

3.匿名內(nèi)部類/非靜態(tài)內(nèi)部類和異步線程0

非靜態(tài)內(nèi)部類創(chuàng)建靜態(tài)實(shí)例造成的內(nèi)存泄漏

4.匿名內(nèi)部類

android開(kāi)發(fā)經(jīng)常會(huì)繼承實(shí)現(xiàn)Activity/Fragment/View柒竞,此時(shí)如果你使用了匿名類政供,

并被異步線程持有了播聪,那要小心了,如果沒(méi)有任何措施這樣一定會(huì)導(dǎo)致泄露

5.Handler 造成的內(nèi)存泄漏

Handler布隔、Message 和 MessageQueue 都是相互關(guān)聯(lián)在一起的离陶,萬(wàn)一 Handler 發(fā)送的 Message 尚未被處理,

則該 Message 及發(fā)送它的 Handler 對(duì)象將被線程 MessageQueue 一直持有衅檀。

Handler 屬于 TLS(Thread Local Storage) 變量, 生命周期和 Activity 是不一致的招刨。

因此這種實(shí)現(xiàn)方式一般很難保證跟 View 或者 Activity 的生命周期保持一致,故很容易導(dǎo)致無(wú)法正確釋放

6.盡量避免使用 static 成員變量

如果你的app進(jìn)程設(shè)計(jì)上是長(zhǎng)駐內(nèi)存的哀军,那即使app切到后臺(tái)沉眶,這部分內(nèi)存也不會(huì)被釋放。按照現(xiàn)在手機(jī)app內(nèi)存管理機(jī)制杉适,

占內(nèi)存較大的后臺(tái)進(jìn)程將優(yōu)先回收谎倔,yi'wei如果此app做過(guò)進(jìn)程互保保活猿推,那會(huì)造成app在后臺(tái)頻繁重啟片习。

當(dāng)手機(jī)安裝了你參與開(kāi)發(fā)的app以后一夜時(shí)間手機(jī)被消耗空了電量、流量蹬叭,你的app不得不被用戶卸載或者靜默藕咏。

7.避免 override finalize()

8.資源未關(guān)閉造成的內(nèi)存泄漏

對(duì)于使用了BraodcastReceiver,ContentObserver秽五,F(xiàn)ile孽查,游標(biāo) Cursor,Stream坦喘,Bitmap等資源的使用卦碾,

應(yīng)該在Activity銷毀時(shí)及時(shí)關(guān)閉或者注銷铺坞,否則這些資源將不會(huì)被回收,造成內(nèi)存泄漏洲胖。

9.一些不良代碼造成的內(nèi)存泄漏

10.線程造成的內(nèi)存泄漏

當(dāng)我們?cè)谑褂镁€程的時(shí)候,一般都使用匿名內(nèi)部類,而匿名內(nèi)部類會(huì)對(duì)外部類持有默認(rèn)的引用,當(dāng)Acticity關(guān)閉之后如果現(xiàn)成中的任務(wù)還沒(méi)有執(zhí)行完畢,就會(huì)導(dǎo)致Activity不能正臣谜ィ回收,造成內(nèi)存泄漏

11.監(jiān)聽(tīng)器沒(méi)有注銷造成的內(nèi)存泄漏

在Android程序里面存在很多需要register與unregister的監(jiān)聽(tīng)器,我們需要確保及時(shí)unregister監(jiān)聽(tīng)器绿映。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末擒滑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叉弦,更是在濱河造成了極大的恐慌丐一,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淹冰,死亡現(xiàn)場(chǎng)離奇詭異库车,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)樱拴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)柠衍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人晶乔,你說(shuō)我怎么就攤上這事珍坊。” “怎么了正罢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵阵漏,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我翻具,道長(zhǎng)履怯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任裆泳,我火速辦了婚禮叹洲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晾虑。我一直安慰自己疹味,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布帜篇。 她就那樣靜靜地躺著糙捺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪笙隙。 梳的紋絲不亂的頭發(fā)上洪灯,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音竟痰,去河邊找鬼签钩。 笑死掏呼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铅檩。 我是一名探鬼主播憎夷,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼昧旨!你這毒婦竟也來(lái)了拾给?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤兔沃,失蹤者是張志新(化名)和其女友劉穎蒋得,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體乒疏,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡额衙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怕吴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窍侧。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖械哟,靈堂內(nèi)的尸體忽然破棺而出疏之,到底是詐尸還是另有隱情殿雪,我是刑警寧澤暇咆,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站丙曙,受9級(jí)特大地震影響爸业,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜亏镰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一扯旷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧索抓,春花似錦钧忽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至篮幢,卻和暖如春大刊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背三椿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工缺菌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留葫辐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓伴郁,卻偏偏與公主長(zhǎng)得像耿战,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子焊傅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容