我看到有人将垃圾收集器称为很多东西-代际等,但我看到Boehm GC被标记为"保守型"。这究竟是什么意思?
我曾见过许多种垃圾收集器,例如代际垃圾收集器等等,但我看到Boehm GC被标注为“保守型”垃圾收集器。那是什么意思呢?我看到有人将垃圾收集器称为很多东西-代际等,但我看到Boehm GC被标记为"保守型"。这究竟是什么意思?
我曾见过许多种垃圾收集器,例如代际垃圾收集器等等,但我看到Boehm GC被标注为“保守型”垃圾收集器。那是什么意思呢?一些长得像指针的数值会防止堆的某些部分被回收,导致内存泄漏。在32位地址空间中,这是一个更大的问题,因为如果已分配了GB级别的RAM,几乎每个int都会指向堆块。
确定某个单词是否指向已分配的堆块需要搜索堆,这是一个缓慢且(客观上)不必要的过程。
GC不能移动堆块,因为它不知道它们所有指针的位置,也因此不能更新指针。
隐藏指针或在堆块外使用指针的代码会使保守型GC崩溃。这个问题曾经在Numerical Recipes和Boehm GC的C代码中出现,尽管是因为NR C代码违反了C规范。