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

隨筆 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,請移步
叫我abc

常用鏈接

留言簿(12)

隨筆分類

我的博客

搜索

  •  

積分與排名

  • 積分 - 305652
  • 排名 - 84

最新評論

閱讀排行榜

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

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

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

干脆寫一個yfgc的源碼解析系列好了

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

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

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

至于手動collect,在我看來和后臺自動collect無啥區(qū)別  回復(fù)  更多評論
  
# re: 垃圾收集的那點(diǎn)事(A) 2008-09-10 22:45 陳梓瀚(vczh)
還是有的,譬如new失敗的時(shí)候后臺可以中斷然后collect然后再幫你new。  回復(fù)  更多評論
  
# re: 垃圾收集的那點(diǎn)事(A) 2008-09-11 15:49 空明流轉(zhuǎn)
說實(shí)話我真覺得不比shared_ptr好多少,RAII才是C++一類貨的王道。  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              亚洲第一网站| 亚洲激情国产| 国内视频一区| 国产伦理一区| 韩国av一区二区| 伊伊综合在线| 亚洲人成亚洲人成在线观看| 亚洲国产国产亚洲一二三| 亚洲国内精品| 一区二区精品在线观看| 亚洲欧美日韩国产一区二区| 欧美在线综合视频| 欧美岛国激情| 夜夜嗨一区二区| 香蕉精品999视频一区二区| 午夜精品美女自拍福到在线| 欧美一区二区三区四区在线观看地址 | 99精品欧美一区二区蜜桃免费| 亚洲精品乱码久久久久久蜜桃麻豆 | 99pao成人国产永久免费视频| 国内免费精品永久在线视频| 狠狠色狠狠色综合日日五| 国语自产在线不卡| 最新热久久免费视频| 亚洲日本在线观看| 亚洲一区欧美激情| 小黄鸭精品aⅴ导航网站入口| 亚洲男人av电影| 久久国产手机看片| 欧美电影免费观看网站| 欧美日韩美女一区二区| 欧美黑人在线观看| 亚洲韩国日本中文字幕| 一区二区三区免费在线观看| 亚洲婷婷免费| 久久精品人人| 欧美日韩国产成人在线观看| 欧美午夜久久| 国产亚洲欧美另类中文 | 欧美aⅴ一区二区三区视频| 久久久无码精品亚洲日韩按摩| 欧美sm极限捆绑bd| 国产精品草莓在线免费观看| 国产精品www994| 一区二区三区在线看| 韩国亚洲精品| 激情五月***国产精品| 狠狠做深爱婷婷久久综合一区| 一二三区精品福利视频| 欧美一区二区三区视频在线| 亚洲欧洲三级电影| 欧美一区2区三区4区公司二百 | 欧美日韩在线精品| 在线播放豆国产99亚洲| 亚洲伊人网站| 亚洲精品国产无天堂网2021| 久久精品麻豆| 国产精品国产三级国产aⅴ浪潮| 在线成人免费视频| 香蕉久久夜色精品| 亚洲乱码国产乱码精品精98午夜 | 欧美三级日韩三级国产三级| 亚洲国产91| 久久女同互慰一区二区三区| 一区二区三区欧美日韩| 午夜欧美大片免费观看| 欧美视频在线免费看| 亚洲成色最大综合在线| 艳妇臀荡乳欲伦亚洲一区| 久久裸体艺术| 久久福利资源站| 国产无一区二区| 欧美自拍偷拍| 亚洲欧美一级二级三级| 国产精品高清一区二区三区| 一区二区三区毛片| 亚洲人成网站在线播| 老鸭窝毛片一区二区三区| 国产一区二区高清视频| 亚洲欧美日韩电影| 亚洲一区二区三区欧美| 国产精品久久9| 先锋影音网一区二区| 亚洲一区二区视频在线| 欧美国产日韩xxxxx| 亚洲电影一级黄| 欧美xart系列高清| 久久亚洲私人国产精品va媚药| 国产在线一区二区三区四区 | 午夜综合激情| 欧美亚洲日本国产| 国产欧美视频一区二区| 性做久久久久久免费观看欧美| 亚洲在线观看免费视频| 国产精品午夜春色av| 欧美一区二区日韩| 香蕉乱码成人久久天堂爱免费 | 国产精品xxx在线观看www| 亚洲免费中文字幕| 亚洲主播在线播放| 伊甸园精品99久久久久久| 欧美黑人国产人伦爽爽爽| 欧美精品18+| 香蕉国产精品偷在线观看不卡| 午夜宅男久久久| 亚洲国产裸拍裸体视频在线观看乱了| 欧美激情一区二区三区全黄 | 亚洲激情小视频| 欧美三级特黄| 久久久人人人| 欧美麻豆久久久久久中文| 亚洲欧美变态国产另类| 欧美一区二区三区四区在线观看| 亚洲国产高清在线观看视频| 亚洲精品一区二区三区婷婷月 | 黄色工厂这里只有精品| 亚洲国产高清aⅴ视频| 国产精品久久久久久久9999| 久久精品在线视频| 欧美国产在线视频| 欧美一区二区在线免费播放| 浪潮色综合久久天堂| 亚洲一级一区| 久久在线免费| 欧美制服丝袜| 欧美日韩国产123| 久久深夜福利免费观看| 欧美精品久久久久久久久久| 久久青草久久| 国产精品国产三级国产专播品爱网 | 欧美精品久久久久久久| 久久九九全国免费精品观看| 男同欧美伦乱| 久久婷婷久久| 国产精品免费久久久久久| 亚洲第一页自拍| 狠狠色综合网| 亚洲欧美日韩久久精品| 一区二区三区欧美成人| 两个人的视频www国产精品| 欧美在线观看网址综合| 欧美日韩在线一区二区| 亚洲国产成人久久| 在线观看一区| 久久精品国产久精国产思思| 午夜精品久久久久久久99水蜜桃| 欧美激情精品久久久久久蜜臀| 蜜臀av性久久久久蜜臀aⅴ| 国产日韩欧美高清免费| 亚洲视频一二三| 午夜国产欧美理论在线播放| 欧美日韩成人综合在线一区二区| 欧美第一黄色网| 伊大人香蕉综合8在线视| 99国产精品视频免费观看一公开| 狠狠色丁香婷婷综合久久片| 久久激情网站| 老司机成人网| 激情校园亚洲| 久久免费高清视频| 乱人伦精品视频在线观看| 韩国三级在线一区| 一区二区三区免费在线观看| 亚洲黄色在线视频| 欧美日韩国产成人| 亚洲视频成人| 欧美一区网站| 国产一区久久| 久久婷婷人人澡人人喊人人爽| 免费高清在线一区| 91久久久国产精品| 欧美日韩国产免费| 一区二区三区日韩| 香蕉久久一区二区不卡无毒影院 | 亚洲福利视频在线| 国产亚洲综合精品| 一区二区成人精品 | 欧美日韩另类视频| 蜜臀久久99精品久久久画质超高清 | 久久综合中文字幕| 亚洲激情偷拍| 亚洲欧美三级在线| 韩国精品主播一区二区在线观看| 久久久久免费视频| 亚洲精品视频一区二区三区| 亚洲免费综合| 欧美日韩国产成人在线免费| 亚洲一区二区三区在线视频| 久久人体大胆视频| 一区二区三区国产| 免费观看亚洲视频大全| 亚洲欧美视频在线| 欧美激情1区2区3区| 亚洲欧洲精品一区二区三区波多野1战4 | 亚洲一区二区三区乱码aⅴ| 国产日韩欧美二区| 午夜视频在线观看一区二区三区| 亚洲欧美中文日韩v在线观看| 国产精品久久久久久久免费软件| 一区二区三区国产盗摄|