作者eorlthexiv (伊歐)
看板EE_DSnP
標題Re: [問題] Garbage collection
時間Tue Jun 23 03:45:06 2009
我不知道為什麼我沒辦法一次把所有的dead nodes清完
我的寫法是利用_uniqeTable的iteraor一個個檢查
如果遇到dead node就去做必要的處理,而且還要去檢查他的子孫(利用recurrence)
我覺得我的recurrence應該沒有寫錯
而且我也有考慮到如果有把目前這個iterator所在的籃子裡的nodes清掉的話,
iterator可能要往回移幾個的情形
(我的iterator是以"籃子的index"以及"籃子裡的index"來specify)
我想了很久還是不知道哪邊有問題,不知道是我有寫錯還是漏掉考慮某些情形
目前的解決方法是多清幾次直到乾淨為止...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.137.69.81
1F:推 ric2k1:有沒有人有寫的, 分享一下, 我自己也沒有寫... XD 06/23 16:49
2F:推 yangjiunru:可以參考一下Project網頁上的paper 06/23 20:09
3F:→ yangjiunru:Efficient implementation of a BDD package 06/23 20:09
4F:→ yangjiunru:他的refCount算法根reference code有一點不一樣 06/23 20:09
5F:→ yangjiunru:incRefCount和decRefCount會變慢一點 06/23 20:10
6F:→ yangjiunru:但是Garbage collectoin比較好做 06/23 20:10
7F:推 yangjiunru:在那篇第四頁左下角那一段 06/23 20:12
我找到問題根源了,問題出在我在recurrence裡會產生BddNode的local variable
如果在recurrence的下層很不幸的遇到上層曾經出現的node
那_refCount就不對了,所以有些就沒有被清掉
另外那篇paper提醒了我還要注意_computedTable,感謝!
※ 編輯: eorlthexiv 來自: 220.137.69.81 (06/24 15:14)