把旧的Blog的一部分内容迁移过来,以前是不想别人顺着搜到这个Blog上面,现在无所谓了。
看看以前的内容,感觉,人变化的真快啊!
---
GC的实现堵在一个地方,就在当分配失败的那次强行GC的实现。一开始发现有些地方想得太简单了,用户不能在这个时候把GC关闭。这时候,我需要等待所有其他的GC关闭的人恢复GC之后才能做。一开始准备把这个做成和GC thread里面那个信号量放在一起,做成信号量数组等待通知所有,发现一个错误的逻辑,就是gc执行的条件应该分为GC允许执行和GC需要执行. 一开始并没有分开,GC thread应该是表达当系统不忙的时候GC需要执行的话,就执行GC, 而GC 允许的条件就是那个关闭GC的个数为0才能允许。强行GC的时候比较特殊,我应该等待到GC允许就立即GC执行,虽然后面的GC需要的条件也是满足的,但是总觉的合并这个逻辑是不好的。另外也不想那么麻烦,直接忙等待sleep到条件满足就执行把,GC thread使用类似Monitor的实现,如果这个也做成那样,就需要真的作完整的monitor,要搞多个信号量来维护,因为需要多个线程都可能等待这个条件。但是这个条件是不常见的,所以比较浪费,还是简单好用的sleep把。。
0 COMMENTS:
发表评论