@autoreleasepool的用法

前二天去某土豪創(chuàng)業(yè)公司面試被問到了內(nèi)存管理的一些問題做修,面試官提到了autoreleasepool的問題媒怯,但是由于項(xiàng)目中從來沒有用過赠制,當(dāng)時(shí)的回答全是憑自己的想象赶袄,結(jié)果也就可想而知了。

回來后查閱了很多資料猴娩,發(fā)現(xiàn)autoreleasepool和runloop有密切的關(guān)系阴幌。

下面舉一下面試官的問題:

{
NSString *str = @"a";
}

給一段上述代碼勺阐,問str對象什么時(shí)候釋放,我回答的是函數(shù)體執(zhí)行完后就釋放了裂七,面試官反問是么,我說是吧(感覺到自己是錯(cuò)的仓坞,但是一直用ARC背零,這快真的從來沒有在意過TOT)。

然后面試官又問无埃,下面這么寫呢徙瓶。我說也是函數(shù)體執(zhí)行完后釋放吧(已經(jīng)慌了,要GG)嫉称。面試官笑著說:那你這么說寫不寫豈不是都一樣侦镇?

{
@autoreleasepool {
    NSString *str = @"a"
}

今天找時(shí)間再次看了一下autoreleasepool的原理,發(fā)現(xiàn)提到了runloop织阅,雖然之前看過runloop壳繁,但是看得并不是很仔細(xì)。于是又重新看了一遍荔棉,發(fā)現(xiàn)了一些之前錯(cuò)誤的認(rèn)識(shí)闹炉,同時(shí)也知道了autoreleasepool內(nèi)對象的時(shí)機(jī),其實(shí)和runloop的執(zhí)行時(shí)機(jī)有關(guān)润樱,和函數(shù)體沒有半毛錢關(guān)系渣触。

接下來就有疑問了,為什么要在函數(shù)體內(nèi)又寫一次@autoreleasepool壹若。查閱資料后嗅钻,發(fā)現(xiàn)了這樣有利于局部變量立刻釋放,于是自己做了一個(gè)小測試:

    for (int i=0;i<100000;i++) {
           UIImage *image = [UIImage imageNamed:@"pic"];
    }

運(yùn)行結(jié)果如下店展,可以看到內(nèi)存直接瘋長养篓,最高達(dá)到了200M。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1796297-

Paste_Image.png

再看看加了@autoreleasepool后:

    for (int i=0;i<100000;i++) {
        @autoreleasepool {
            UIImage *image = [UIImage imageNamed:@"pic"];
        }
    }

運(yùn)行結(jié)果如下:


Paste_Image.png

可以看到內(nèi)存并沒有出現(xiàn)瘋長的情況赂蕴,因?yàn)锧autoreleasepool的作用觉至,每次循環(huán)結(jié)束后,局部變量會(huì)立刻釋放睡腿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末语御,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子席怪,更是在濱河造成了極大的恐慌应闯,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挂捻,死亡現(xiàn)場離奇詭異碉纺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門骨田,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耿导,“玉大人,你說我怎么就攤上這事态贤〔丈耄” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵悠汽,是天一觀的道長箱吕。 經(jīng)常有香客問我,道長柿冲,這世上最難降的妖魔是什么茬高? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮假抄,結(jié)果婚禮上怎栽,老公的妹妹穿的比我還像新娘。我一直安慰自己宿饱,他們只是感情好婚瓜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刑棵,像睡著了一般巴刻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛉签,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天胡陪,我揣著相機(jī)與錄音,去河邊找鬼碍舍。 笑死柠座,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的片橡。 我是一名探鬼主播妈经,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捧书!你這毒婦竟也來了吹泡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對情侶失蹤经瓷,失蹤者是張志新(化名)和其女友劉穎爆哑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舆吮,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揭朝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年队贱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潭袱。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柱嫌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屯换,到底是詐尸還是另有隱情编丘,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布趟径,位于F島的核電站瘪吏,受9級(jí)特大地震影響癣防,放射性物質(zhì)發(fā)生泄漏蜗巧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一蕾盯、第九天 我趴在偏房一處隱蔽的房頂上張望幕屹。 院中可真熱鬧,春花似錦级遭、人聲如沸望拖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽说敏。三九已至,卻和暖如春丢郊,著一層夾襖步出監(jiān)牢的瞬間盔沫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工枫匾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留架诞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓干茉,卻偏偏與公主長得像谴忧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子沾谓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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

  • 今天在一個(gè)技術(shù)交流群里面看到了釋放池的使用場景。算是解除了我的困惑戳鹅。在for循環(huán)里搏屑,創(chuàng)建的臨時(shí)變量并不會(huì)隨著一次循...
    向晚forever閱讀 860評(píng)論 0 0
  • runtime 和 runloop 作為一個(gè)程序員進(jìn)階是必須的,也是非常重要的粉楚, 在面試過程中是經(jīng)常會(huì)被問到的辣恋, ...
    SOI閱讀 21,802評(píng)論 3 63
  • 說明:面試題來源是微博@我就叫Sunny怎么了的這篇博文:《招聘一個(gè)靠譜的 iOS》亮垫,其中共55題,除第一題為糾錯(cuò)...
    騎行怪狀閱讀 1,453評(píng)論 0 9
  • 《招聘一個(gè)靠譜的 iOS》—參考答案(下) 說明:面試題來源是微博@我就叫Sunny怎么了的這篇博文:《招聘一個(gè)靠...
    Mominglaile閱讀 1,231評(píng)論 0 1
  • 《招聘一個(gè)靠譜的 iOS》—參考答案(下) 說明:面試題來源是微博@我就叫Sunny怎么了的這篇博文:《招聘一個(gè)靠...
    YuWenHaiBo閱讀 4,046評(píng)論 0 16