內(nèi)存管理與自動引用計(jì)數(shù)—第一日

自動引用計(jì)數(shù)

1.1 什么是自動引用計(jì)數(shù)

內(nèi)存管理中對引用采用自動計(jì)數(shù)的計(jì)數(shù)

1.2 內(nèi)存管理/引用計(jì)數(shù)

這一張舉了一個非常生動的例子,對比著講解了內(nèi)存管理的思考方式的四部分

a. 自己生成的對象,自己持有

我們創(chuàng)建了一個對象锥忿,好比是創(chuàng)建了一個辦公室,然后我們持有這個對象缩举,相當(dāng)于第一個進(jìn)入辦公室的人衣赶,同時打開了里面的燈盛正。

b. 不是我們創(chuàng)建的對象,也可以持有

然后其他的對象引用并持有了我們創(chuàng)建的對象屑埋,就像這個辦公室又陸陸續(xù)續(xù)的又進(jìn)來了幾個同事豪筝。

c. 不需要持有對象時釋放

當(dāng)下班的時候,我們都要離開辦公室摘能,所以我們又都陸陸續(xù)續(xù)的離開辦公室续崖,當(dāng)最后一個人離開這個辦公室的時候,我們關(guān)了燈团搞,相當(dāng)于這個對象廢棄了严望。。逻恐。

d. 不是自己持有的對象無法釋放

這個就更好理解了像吻,假如你不在辦公室峻黍,你怎么才能出去。拨匆。姆涩。

什么是自己創(chuàng)建的對象?

所有通過alloc惭每,new骨饿,copy,mutableCopy方法創(chuàng)建的對象都屬于自己創(chuàng)建的對象台腥。

什么是非自己創(chuàng)建的對象宏赘?

所有不屬于上述四種方法創(chuàng)建的對象。這種對象需要在獲取后持有黎侈,即retain

不再需要持有的對象時釋放察署,即release

不是自己持有的對象無法釋放。

邏輯上容易理解峻汉,但是暫時無法理解如何實(shí)現(xiàn)贴汪。

1.2.3 對象生命周期方法的實(shí)現(xiàn)

這個名字是我自己取得。俱济。嘶是。對象生命周期的方法為alloc钙勃,retain蛛碌,release,dealloc辖源,這一小節(jié)講的是上述四方法在GNUstep源碼中的實(shí)現(xiàn)

大致講一個對象生成時蔚携,內(nèi)存塊頭部為一個結(jié)構(gòu)體,結(jié)構(gòu)體內(nèi)只有一個屬性retained克饶,他的值就是引用計(jì)數(shù)酝蜒,初始值為0

alloc調(diào)用時,分配內(nèi)存塊矾湃,返回的地址為 struct * +1

retain retained ++

retainCount 返回retained + 1

release retained — 亡脑,若此方法調(diào)用時retained為0,則調(diào)用dealloc邀跃,廢棄對象

1.2.4蘋果的實(shí)現(xiàn)

與GNU實(shí)現(xiàn)不同霉咨,我的理解是,蘋果實(shí)現(xiàn)中拍屑,對象生成的同時途戒,會建立一張表,用來儲存引用計(jì)數(shù)和指向的內(nèi)存塊

這里其實(shí)理解不是特別深僵驰,看第二遍的時候再仔細(xì)研究下

蘋果實(shí)現(xiàn)和GNU實(shí)現(xiàn)的對比喷斋。

GNU:1. 少量代碼即可完成唁毒。2. 統(tǒng)一管理引用計(jì)數(shù)用內(nèi)存塊和對象用內(nèi)存塊。

蘋果:1. 對象內(nèi)存塊的分配無需考慮內(nèi)存塊頭部星爪。2. 引用表各記錄中存有內(nèi)存塊地址浆西,可從各個記錄追溯到各個對象的內(nèi)存塊。

這里要說的是第二條在調(diào)試中有著至關(guān)重要的作用移必。即使出現(xiàn)故障導(dǎo)致對象占用的內(nèi)存塊損壞室谚,只要引用技術(shù)表沒有被破壞,就能夠確認(rèn)各內(nèi)存塊的位置崔泵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秒赤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子憎瘸,更是在濱河造成了極大的恐慌入篮,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幌甘,死亡現(xiàn)場離奇詭異潮售,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锅风,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門酥诽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人皱埠,你說我怎么就攤上這事肮帐。” “怎么了边器?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵训枢,是天一觀的道長。 經(jīng)常有香客問我忘巧,道長恒界,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任砚嘴,我火速辦了婚禮十酣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘际长。我一直安慰自己耸采,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布也颤。 她就那樣靜靜地躺著洋幻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翅娶。 梳的紋絲不亂的頭發(fā)上文留,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天好唯,我揣著相機(jī)與錄音,去河邊找鬼燥翅。 笑死骑篙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的森书。 我是一名探鬼主播靶端,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凛膏!你這毒婦竟也來了杨名?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤猖毫,失蹤者是張志新(化名)和其女友劉穎台谍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吁断,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趁蕊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了仔役。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掷伙。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖又兵,靈堂內(nèi)的尸體忽然破棺而出任柜,到底是詐尸還是另有隱情,我是刑警寧澤寒波,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布乘盼,位于F島的核電站升熊,受9級特大地震影響俄烁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜级野,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一页屠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蓖柔,春花似錦辰企、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镐捧,卻和暖如春潜索,著一層夾襖步出監(jiān)牢的瞬間臭增,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工竹习, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留誊抛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓整陌,卻偏偏與公主長得像拗窃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子泌辫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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