青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,請(qǐng)移步
叫我abc

常用鏈接

留言簿(12)

隨筆分類

我的博客

搜索

  •  

積分與排名

  • 積分 - 306721
  • 排名 - 84

最新評(píng)論

閱讀排行榜

最近寫新項(xiàng)目,希望能從內(nèi)存管理、指針引用的問題上前進(jìn)一小步,于是在網(wǎng)上爬出云風(fēng)以前寫的一個(gè)gc庫,姑且稱為yfgc吧
粗看了一下接口,很少很正交,使用例子也非常簡(jiǎn)單。只是我對(duì)垃圾收集的原理不是很熟悉,又或者這些接口太接近gc的底層原理,因此我并不是很確定如何運(yùn)用這些接口。
借用某句著名的話,“源碼面前,了無秘密”。為了了解如何運(yùn)用這些接口,我決定去看看這個(gè)不到1000行的gc庫的源碼,順便寫些東西,畢竟好久沒寫了。

yfgc的地址
svn地址:http://manualgc.googlecode.com/svn/trunk

撇去weak table和再分配不談,yfgc有以下接口
 1void gc_init();
 2void gc_exit();
 3
 4void gc_enter();
 5void gc_leave(void *p,);
 6
 7void* gc_malloc(size_t sz,void *parent,void (*finalizer)(void *));
 8
 9void gc_link(void *parent,void *prev,void *now);
10void gc_collect();

先看幾個(gè)明顯易懂的
gc_init,一看就知道是初始化這個(gè)gc庫的,約摸著底下也就是初始化一些數(shù)據(jù)結(jié)構(gòu),分配一些初始內(nèi)存等等。不過至于做了什么,以后再談。
gc_exit,一看就知道是在程序退出時(shí)析構(gòu)gc庫的,多半是釋放內(nèi)存。如果實(shí)現(xiàn)不是很復(fù)雜的話,不調(diào)用這個(gè)函數(shù)也不會(huì)怎樣。
gc_collect,一定是收集垃圾的了,不過現(xiàn)在就深入這個(gè)函數(shù)的話,一定是本末倒置。因?yàn)檫€不知道內(nèi)存在哪里分配,就去看內(nèi)存收集顯然是不對(duì)的。
gc_malloc,可以肯定,這就是gc庫的內(nèi)存分配接口了。好吧,先看看這個(gè)函數(shù),我都有點(diǎn)迫不及待了。

先看一下gc_malloc的三個(gè)參數(shù)
1.sz,請(qǐng)求分配的內(nèi)存大小
2.parent,按字面意思是父親,如果用工廠模式做類比的話,也許會(huì)更容易理解些。工廠生產(chǎn)一個(gè)對(duì)象,就申請(qǐng)一塊內(nèi)存,parent則是工廠本身。
更通用和接近的解釋是,parent即持有或者用指針引用這塊新內(nèi)存的那些對(duì)象。垃圾收集的概念就是,當(dāng)一塊內(nèi)存在程序里不被任何對(duì)象持有或者指針引用的時(shí)候,它就是一塊廢棄的內(nèi)存,可以被系統(tǒng)回收。當(dāng)有任何一個(gè)指針引用著這塊內(nèi)存的時(shí)候,他就必然不能被回收。
所以,parent這個(gè)參數(shù),或者說,新分配的內(nèi)存必須要比parent那塊內(nèi)存活得更長(zhǎng)久,因?yàn)閜arent擁有或者引用著這塊新分配的內(nèi)存。
3.finalizer,析構(gòu)函數(shù),如果分配內(nèi)存用來實(shí)例化一個(gè)類的話,那么這塊內(nèi)存要回收的時(shí)候,顯然要有一個(gè)時(shí)機(jī)來調(diào)用類的析構(gòu)函數(shù)才行。這個(gè)回調(diào)函數(shù)正好可以完成這個(gè)任務(wù)。

干脆寫一個(gè)yfgc的源碼解析系列好了

posted on 2008-09-10 20:22 LOGOS 閱讀(4800) 評(píng)論(5)  編輯 收藏 引用 所屬分類: 垃圾收集

FeedBack:
# re: 垃圾收集的那點(diǎn)事(A) 2008-09-10 20:37 陳梓瀚(vczh)
語言們用的垃圾收集器都不需要我們顯示collect而能夠在適當(dāng)?shù)臅r(shí)候【中斷程序】并【開始搜索并收集】。所以這個(gè)東西最多算個(gè)池。以前我見過一個(gè)可以在C++用的垃圾收集器,不用自己collect,他后臺(tái)自動(dòng)執(zhí)行了。

這個(gè)gc看起來是讓你顯式地維護(hù)一個(gè)圖,然后手動(dòng)對(duì)一定不能收集的節(jié)點(diǎn)進(jìn)行標(biāo)記,然后自己collect。算是【理論上】實(shí)現(xiàn)了那個(gè)功能。  回復(fù)  更多評(píng)論
  
# re: 垃圾收集的那點(diǎn)事(A) 2008-09-10 21:10 Don't tell u
研究win2k泄漏代碼里面的gc似乎也是一種方法,雖然不像.net java那么徹底,似乎夠用,^_^。  回復(fù)  更多評(píng)論
  
# re: 垃圾收集的那點(diǎn)事(A) 2008-09-10 21:14 LOGOS
@陳梓瀚(vczh)
不錯(cuò),確實(shí)如你所說,這東西強(qiáng)迫人手動(dòng)去維護(hù)依賴關(guān)系
如果不這么做,就無法從中得到任何好處

至于手動(dòng)collect,在我看來和后臺(tái)自動(dòng)collect無啥區(qū)別  回復(fù)  更多評(píng)論
  
# re: 垃圾收集的那點(diǎn)事(A) 2008-09-10 22:45 陳梓瀚(vczh)
還是有的,譬如new失敗的時(shí)候后臺(tái)可以中斷然后collect然后再幫你new。  回復(fù)  更多評(píng)論
  
# re: 垃圾收集的那點(diǎn)事(A) 2008-09-11 15:49 空明流轉(zhuǎn)
說實(shí)話我真覺得不比shared_ptr好多少,RAII才是C++一類貨的王道。  回復(fù)  更多評(píng)論
  

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              韩日欧美一区| 国产日本欧美一区二区三区| 欧美一区激情| 一本久久青青| 亚洲第一色在线| 久久久亚洲欧洲日产国码αv| 99视频+国产日韩欧美| 在线观看亚洲精品| 很黄很黄激情成人| 国产欧美一区二区三区久久人妖| 欧美日韩不卡一区| 欧美精品一区二区三区在线播放| 久久久久国产精品人| 性一交一乱一区二区洋洋av| 一区二区三区国产精华| 亚洲日本在线视频观看| 欧美国产日本韩| 免费欧美日韩| 欧美 日韩 国产 一区| 久久综合久久综合这里只有精品| 欧美中在线观看| 欧美一级欧美一级在线播放| 亚洲欧美日韩综合一区| 亚洲视频在线观看免费| 一区二区av| 亚洲视频碰碰| 亚洲尤物精选| 亚洲免费在线| 午夜免费电影一区在线观看| 亚洲影院一区| 亚洲欧美日韩一区| 亚洲一区在线看| 亚洲欧美大片| 欧美综合国产精品久久丁香| 欧美一区二区三区四区在线| 欧美综合二区| 久久综合久色欧美综合狠狠| 麻豆精品一区二区综合av| 老司机精品视频一区二区三区| 久久综合电影| 欧美国产激情| 亚洲精品乱码久久久久久久久| 日韩视频免费大全中文字幕| 日韩一区二区精品在线观看| 一区二区日韩伦理片| 亚洲午夜精品久久| 午夜精品免费在线| 久久久久久尹人网香蕉| 欧美~级网站不卡| 欧美日韩一区三区| 国产精品区一区| 国产婷婷色一区二区三区| 国产一区二区三区在线观看网站| 黄色一区二区在线观看| 亚洲欧洲一区二区三区久久| 一区二区国产日产| 欧美一激情一区二区三区| 久久频这里精品99香蕉| 欧美激情精品| 亚洲小说区图片区| 久久久亚洲国产天美传媒修理工| 欧美88av| 国产九色精品成人porny| 18成人免费观看视频| 99亚洲精品| 久久er99精品| 欧美黄在线观看| 亚洲一区二区成人在线观看| 欧美专区在线观看| 欧美日韩国产999| 国内精品一区二区三区| 日韩亚洲成人av在线| 欧美伊久线香蕉线新在线| 欧美成人一区二区在线| 夜夜夜久久久| 久久一二三四| 国产精品美女午夜av| 亚洲国产成人久久| 亚洲在线视频| 亚洲国产人成综合网站| 性做久久久久久免费观看欧美| 欧美黄色精品| 国产自产高清不卡| 亚洲一区二区三区欧美| 欧美插天视频在线播放| 亚洲字幕一区二区| 欧美成人伊人久久综合网| 国产精品视频免费| 亚洲美女黄网| 久久亚洲二区| 亚洲免费在线精品一区| 欧美精品在线观看播放| 黄网动漫久久久| 午夜免费久久久久| 亚洲精品之草原avav久久| 欧美在线国产精品| 国产精品久久久久毛片软件| 亚洲另类黄色| 欧美va天堂在线| 欧美一区二区三区另类| 国产精品久久久久久久7电影 | 久久精品亚洲热| 99精品视频免费全部在线| 麻豆freexxxx性91精品| 国产手机视频精品| 午夜在线成人av| 一区二区三区高清在线观看| 欧美精品18+| 亚洲国产婷婷香蕉久久久久久99| 久久精品夜色噜噜亚洲aⅴ| 亚洲一区二区三区欧美| 欧美日韩一区二区三区在线 | 久久精品国产亚洲aⅴ| 一级成人国产| 欧美日韩一区在线视频| 99精品热视频| 亚洲精选在线| 欧美剧在线观看| 一区二区免费在线视频| 欧美激情四色| 欧美国产激情二区三区| 亚洲精品乱码久久久久| 亚洲第一色在线| 欧美成人免费视频| 亚洲日本成人女熟在线观看| 亚洲国产经典视频| 欧美激情一区二区三区在线| 亚洲精品久久久蜜桃 | 日韩一区二区电影网| 亚洲天堂av图片| 亚洲伊人观看| 美日韩精品免费| 欧美日韩国内| 欧美激情一区二区三区高清视频 | 欧美在线视频一区二区三区| 亚洲欧美国产不卡| 欧美一区二区三区精品电影| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲香蕉在线观看| 欧美日韩久久久久久| 亚洲天堂av在线免费观看| 一本久道久久综合中文字幕| 国产精品久久久久久久久免费樱桃| 亚洲精品资源美女情侣酒店| 亚洲三级毛片| 国产精品国产三级国产aⅴ9色| 亚洲欧美日韩区| 欧美在线一二三| 亚洲高清视频一区| 亚洲欧洲一区二区在线播放| 欧美日韩在线影院| 欧美专区18| 美国三级日本三级久久99| 日韩视频欧美视频| 一区二区欧美日韩视频| 国产午夜精品一区二区三区视频 | 欧美中文字幕第一页| 在线观看亚洲精品| 亚洲精品欧美精品| 国产精品大片| 久久久久.com| 欧美激情精品久久久久久变态| 亚洲视频日本| 久久精品国产99国产精品澳门| 亚洲国产精品一区二区第四页av | 国产日韩成人精品| 欧美成人免费全部观看天天性色| 欧美另类69精品久久久久9999| 亚洲欧美日本日韩| 久久久久久欧美| 亚洲一区二区黄| 久久久久久一区二区| 在线视频欧美日韩| 久久精品国产亚洲一区二区三区| 99国产精品久久久| 小嫩嫩精品导航| 日韩视频免费| 久久激情久久| 亚洲视频欧美视频| 久久一综合视频| 小嫩嫩精品导航| 欧美激情导航| 久久综合九色九九| 国产精品黄页免费高清在线观看| 老司机精品久久| 国产精品三级视频| 亚洲国产欧美日韩| 好吊色欧美一区二区三区视频| 亚洲精选在线| 亚洲国产精品一区二区第四页av | 欧美日韩国产电影| 女人色偷偷aa久久天堂| 国产精品捆绑调教| 91久久在线播放| 在线播放日韩欧美| 欧美亚洲日本国产| 亚洲欧美成人精品| 欧美麻豆久久久久久中文| 免费看亚洲片| 国产精品www994|