D 的 gc, 哪位大大比较清楚, 请解惑
qiezi
2007-09-16
搞清楚了,原来是tango改写了Thread,在里面加了个Context链表,每一个Fiber都把Context在里面注册了,然后修改了GC,在扫描线程堆栈的部分加上了扫描Fiber堆栈,这就完整了。
|
|
hqs7636
2011-12-13
A benchmark, mostly GC
The timings, best of 3, seconds: DMD: 22.5 Python: 9.3 Java: 2.9 DMD 2.057beta, -O -release -inline Java SE 1.7.0_01-b08 (used without -server) Python 2.6.6 32 bit Windows system. The D version is about 7.7 times slower than the Java client version. http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=151610 |
|
zsxxsz
2011-12-13
垃圾回收确实也是D目前的最大问题之一,效率极其低下,大大拖累了D的运行速度
|
|
hqs7636
2011-12-13
不会写直接翻译java的不就完了吗
|
|
lifc
2011-12-16
hqs7636 写道 不会写直接翻译java的不就完了吗
d和java/python不一样。没有vm的语言不容易做到精确gc,通常只能实现保守gc,就是redsea从代码看到的暴力扫描(创建fiber后把fiber的stack也注册到gc扫描空间),遇到“疑似”指针要当做指针mark对应的内存块。 所以目前go/d这些编译型语言的gc效果普遍不好,暂时都没实现java的compact gc,因为有些“疑似”指针gc不敢改,何况还要照顾c的外部指针引用。 |
|
hqs7636
2011-12-16
这些高手不来干点活真是浪费
![]() |