通过引用计数,可以在不再引用对象后立即回收对象。它不需要为GC运行单独的线程。 其他GC方法,如标记和扫描,在它自己的线程上运行,我们无法确定它何时运行也许最新的一代在函数返回时被回收,但是推送到下一代的其他一些对象也可能是垃圾。
是否有其他GC方法在确定的时间回收物体?
答案 0 :(得分:2)
如果“在确定的时间”你的意思是“尽快,在没有周期”,那么没有。您需要 naive 引用计数,除了所有问题之外,您甚至无法使用引用计数的任何优化(例如延迟引用计数)。
如果“范围结束”之类的时间可以接受,那么是的,这是可能的(虽然不可取)。您只需运行当时的任何形式的GC。当然,这是非常低效的,这是没人做的唯一原因(另一个原因是唯一的优势,确定性清理,很少需要并且更明确地处理)。增量GC可能会缓解这一点,但我不确定多少。