Android內(nèi)存泄露解析

內(nèi)存泄露的原因是引用還存在身辨,無(wú)法及時(shí)釋放內(nèi)存睛琳,android的內(nèi)存泄露主要是activity銷(xiāo)毀不及時(shí)淆两。

造成內(nèi)存泄露主要分為兩個(gè)原因

  • 內(nèi)部類(lèi)持有其外部類(lèi)的引用
  • 外部類(lèi)持有本類(lèi)引用,而外部類(lèi)又比本類(lèi)生命周期長(zhǎng)

內(nèi)部類(lèi)

內(nèi)部類(lèi)主要有

  • 靜態(tài)內(nèi)部類(lèi)
  • 非靜態(tài)內(nèi)部類(lèi)

因?yàn)殪o態(tài)內(nèi)部類(lèi)不持有外部類(lèi)的引用默终,不會(huì)造成泄露。主要討論非靜態(tài)內(nèi)部類(lèi)犁罩。

舉個(gè)栗子

private void testThread(){
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Thread.sleep(1000 * 60);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }).start();
}

new Runable是個(gè)匿名內(nèi)部類(lèi)齐蔽,當(dāng)activity調(diào)用finish()的時(shí)候由于線(xiàn)程沒(méi)有走完,new runable持有activity的引用床估,所以activity不會(huì)被及時(shí)的釋放內(nèi)存含滴。

在內(nèi)部類(lèi)造成內(nèi)存泄露的情況下最經(jīng)典的是handler的原因

private Handler mHandler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
     }
};

以前喜歡這樣直接在activity new Handler出來(lái),但這樣是有風(fēng)險(xiǎn)的丐巫,很大可能造成內(nèi)存泄露蛙吏。具體原因和解決方法可以看Android中Handler引起的內(nèi)存泄露

外部類(lèi)

在activity里面new一個(gè)外部類(lèi)或者調(diào)用外部類(lèi)方法要傳進(jìn)activity引用時(shí),外部類(lèi)的生命周期要比activity長(zhǎng)的話(huà)都有可能造成內(nèi)存泄露鞋吉,極端的例子是在activity中傳進(jìn)引用獲取單例鸦做。

public class Singleton {
    private static Singleton instance;
    private Context mContext;
    private Singleton(Context mContext){
        this.mContext = mContext;
    }
    public static synchronized Singleton getInstance(Context mContext) {
        if (instance != null){
            instance = new Singleton(mContext);
        }
        return instance;
    }
}

靜態(tài)變量的生命周期是貫穿整個(gè)應(yīng)用進(jìn)程的,所以這樣在activity獲取單例是肯定會(huì)造成內(nèi)存泄露的谓着。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泼诱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赊锚,更是在濱河造成了極大的恐慌治筒,老刑警劉巖屉栓,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異耸袜,居然都是意外死亡友多,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)堤框,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)域滥,“玉大人,你說(shuō)我怎么就攤上這事蜈抓∑舸拢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵沟使,是天一觀(guān)的道長(zhǎng)委可。 經(jīng)常有香客問(wèn)我,道長(zhǎng)腊嗡,這世上最難降的妖魔是什么着倾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮燕少,結(jié)果婚禮上屈呕,老公的妹妹穿的比我還像新娘。我一直安慰自己棺亭,他們只是感情好虎眨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著镶摘,像睡著了一般嗽桩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凄敢,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天碌冶,我揣著相機(jī)與錄音,去河邊找鬼涝缝。 笑死扑庞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拒逮。 我是一名探鬼主播罐氨,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼滩援!你這毒婦竟也來(lái)了栅隐?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎租悄,沒(méi)想到半個(gè)月后谨究,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泣棋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年胶哲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潭辈。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸯屿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萎胰,到底是詐尸還是另有隱情,我是刑警寧澤棚辽,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布技竟,位于F島的核電站,受9級(jí)特大地震影響屈藐,放射性物質(zhì)發(fā)生泄漏榔组。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一联逻、第九天 我趴在偏房一處隱蔽的房頂上張望搓扯。 院中可真熱鬧,春花似錦包归、人聲如沸锨推。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)换可。三九已至,卻和暖如春厦幅,著一層夾襖步出監(jiān)牢的瞬間沾鳄,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工确憨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留译荞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓休弃,卻偏偏與公主長(zhǎng)得像吞歼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子塔猾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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