引用计数似乎比标记和清除垃圾收集器更快地删除东西,因为事物可以被释放并且一旦不再使用就会回收内存。标记和扫描旨在解决的问题是捕获循环引用,但作为交换,您必须遍历整个对象树,而其他一切必须在发生这种情况时暂停。
保持引用计数,并且只在内存不足时定期使用标记和扫描是不是更好?标记和扫描GC暂停是一个巨大的痛苦,很难预测或避免。如果引擎支持引用计数,它可能会减少对它们的需求 - 如果你小心避免循环引用,甚至可以为零。
我注意到Python uses this kind of scheme,但可能更多是出于历史原因,而不是故意的表现决定。
答案 0 :(得分:3)
这是一个艰难的决定,最好的选择并不总是很明确。引用计数确实有优点,但是当你争论时,它并没有“显然”更好: