D编程语言是否使用增量垃圾收集器?

orl*_*rlp 12 garbage-collection d

垃圾收集页面不指定d是否使用增量垃圾收集或停止的世界版本.它确实提到了暂停几次,这可能暗示了一个世界末日的垃圾收集器,但我不确定.

如果它不使用增量垃圾收集器,是否有任何特殊原因?一个停止世界的GC给交互式应用程序带来了困难.

Vla*_*eev 13

当前的实现(Druntime)使用了一个stop-the-world垃圾收集器,但语言本身并没有对实现的细节施加很多限制.

D,CDGC有一个并发的垃圾收集器,用于类似*nix的操作系统(它使用分叉).

由于需要写入障碍,增量GC很难在编译环境中使用.VM可以跟踪引用,但是可以调用的系统语言memcpy和类似的功能不能.

  • "增量垃圾收集"通常意味着允许应用程序代码在堆扫描开始和结束时在各点之间运行.如果GC找不到对它的任何引用,则对象被视为垃圾并收集...当GC扫描内存块A时出现问题,然后应用程序代码将对象的唯一引用从块B移动到A,并且然后GC扫描块B.如果GC在扫描后没有注意到块A被修改,它将永远不会看到对该对象的任何引用,并将其丢弃. (6认同)