垃圾收集器页面没有说明D语言使用的是增量式垃圾收集器还是全停顿垃圾收集器。它确实几次提到了暂停,这可能是全停顿垃圾收集器的暗示,但我不确定。 如果它不使用增量式垃圾收集器,是否有什么特定原因?全停顿垃圾收集器对于交互式应用程序来说很麻烦。
目前的实现 (Druntime) 使用停止-全局垃圾回收器(stop-the-world garbage collector),但语言本身对实现的细节没有太多限制。 D语言有一个针对*nix类操作系统的并发垃圾回收器(CDGC)(它使用分叉)。 增量式垃圾回收在编译环境中很难使用,因为需要写入屏障(write barriers)。虚拟机可以跟踪引用,但是系统语言,比如可以调用memcpy和类似函数的语言则不能。