作者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)