12
page on the garbage collector不指定D是使用增量垃圾收集器还是停止使用版本。它确实提到暂停几次,这可能是一个停止世界的垃圾收集器暗示,但我不知道。D编程语言是否使用增量垃圾回收器?
如果它不使用增量垃圾回收器,是否有任何特殊的原因呢?世界一站式的GC给交互式应用程序带来了困难。
page on the garbage collector不指定D是使用增量垃圾收集器还是停止使用版本。它确实提到暂停几次,这可能是一个停止世界的垃圾收集器暗示,但我不知道。D编程语言是否使用增量垃圾回收器?
如果它不使用增量垃圾回收器,是否有任何特殊的原因呢?世界一站式的GC给交互式应用程序带来了困难。
嗨那里的哈恩特粉丝(是的,我的化身是哈恩特的灵感)!那就是说,为什么增量垃圾收集器需要编写屏障? – orlp 2012-03-26 14:13:22
“增量垃圾回收”通常意味着应用程序代码允许在堆扫描开始和结束时在点之间运行。如果GC无法找到对其的任何引用,则会将对象视为垃圾并收集...当GC扫描内存块A时出现问题,然后应用程序代码将唯一对象从块B引用到A,并且那么GC扫描块B.如果GC没有注意到块A在扫描后被修改,它将永远不会看到对该对象的任何引用,并丢弃它。 – 2012-03-26 18:19:59
这是错误的,它不一定需要在应用程序代码中写入屏障。它需要访问MMU来跟踪内存写入 - 在Windows上我们有一个内存写入观察API。这不是魔术,也不是很难。 – Lothar 2014-07-04 00:05:33