西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁編程開發(fā)VC|VC++ → 從內(nèi)存管 理、內(nèi)存泄漏、內(nèi)存回收探討C++內(nèi)存管理

從內(nèi)存管 理、內(nèi)存泄漏、內(nèi)存回收探討C++內(nèi)存管理

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:西西整理時(shí)間:2013/1/7 22:44:58字體大。A-A+

作者:西西點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: 內(nèi)存管理

  • 類型:電子教程大。438KB語言:中文 評(píng)分:6.0
  • 標(biāo)簽:
立即下載
4 頁 淺議C++ 中的垃圾回收方法

3.2 淺議C++ 中的垃圾回收方法

  許多 C 或者 C++ 程序員對(duì)垃圾回收嗤之以鼻,認(rèn)為垃圾回收肯定比自己來管理動(dòng)態(tài)內(nèi)存要低效,而且在回收的時(shí)候一定會(huì)讓程序停頓在那里,而如果自己控制內(nèi)存管理的話,分配和釋放時(shí)間都是穩(wěn)定的,不會(huì)導(dǎo)致程序停頓。最后,很多 C/C++ 程序員堅(jiān)信在C/C++ 中無法實(shí)現(xiàn)垃圾回收機(jī)制。這些錯(cuò)誤的觀點(diǎn)都是由于不了解垃圾回收的算法而臆想出來的。

  其實(shí)垃圾回收機(jī)制并不慢,甚至比動(dòng)態(tài)內(nèi)存分配更高效。因?yàn)槲覀兛梢灾环峙洳会?放,那么分配內(nèi)存的時(shí)候只需要從堆上一直的獲得新的內(nèi)存,移動(dòng)堆頂?shù)闹羔樉蛪蛄;而釋放的過程被省略了,自然也加快了速度,F(xiàn)代的垃圾回收算法已經(jīng)發(fā)展了 很多,增量收集算法已經(jīng)可以讓垃圾回收過程分段進(jìn)行,避免打斷程序的運(yùn)行了。而傳統(tǒng)的動(dòng)態(tài)內(nèi)存管理的算法同樣有在適當(dāng)?shù)臅r(shí)間收集內(nèi)存碎片的工作要做,并不 比垃圾回收更有優(yōu)勢。

  而垃圾回收的算法的基礎(chǔ)通;趻呙璨(biāo)記當(dāng)前可能被使用的所有內(nèi)存塊,從已經(jīng)被分配的所有內(nèi)存中把未標(biāo)記的內(nèi)存回收來做的。C/C++ 中 無法實(shí)現(xiàn)垃圾回收的觀點(diǎn)通;跓o法正確掃描出所有可能還會(huì)被使用的內(nèi)存塊,但是,看似不可能的事情實(shí)際上實(shí)現(xiàn)起來卻并不復(fù)雜。首先,通過掃描內(nèi)存的數(shù) 據(jù),指向堆上動(dòng)態(tài)分配出來內(nèi)存的指針是很容易被識(shí)別出來的,如果有識(shí)別錯(cuò)誤,也只能是把一些不是指針的數(shù)據(jù)當(dāng)成指針,而不會(huì)把指針當(dāng)成非指針數(shù)據(jù)。這樣, 回收垃圾的過程只會(huì)漏回收掉而不會(huì)錯(cuò)誤的把不應(yīng)該回收的內(nèi)存清理。其次,如果回溯所有內(nèi)存塊被引用的根,只可能存在于全局變量和當(dāng)前的棧內(nèi),而全局變量(包括函數(shù)內(nèi)的靜態(tài)變量)都是集中存在于 bss 段或 data段中。

  垃圾回收的時(shí)候,只需要掃描 bss 段, data 段以及當(dāng)前被使用著的?臻g,找到可能是動(dòng)態(tài)內(nèi)存指針的量,把引用到的內(nèi)存遞歸掃描就可以得到當(dāng)前正在使用的所有動(dòng)態(tài)內(nèi)存了。

  如果肯為你的工程實(shí)現(xiàn)一個(gè)不錯(cuò)的垃圾回收器,提高內(nèi)存管理的速度,甚至減少總的內(nèi)存消耗都是可能的。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)
    推薦文章

    沒有數(shù)據(jù)

      沒有數(shù)據(jù)
    最新文章
      沒有數(shù)據(jù)