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
这些高手不来干点活真是浪费 
Global site tag (gtag.js) - Google Analytics