R中的垃圾收集器是如何工作的



我有以下假设:

  1. 对于垃圾回收,使用对象的引用计数,即为该对象分配了多少名称
  2. 如果一个对象有0个引用,则使用垃圾收集器

然而,在Hadley wickham的一次演讲中,他说,R只知道一个对象是否有1个或多个引用,因此一旦它有2个以上的引用,它就永远不会降到0个引用。

所以我的问题是:垃圾收集器在R中是如何工作的?

正如@Roland所说,R 4.0.0引入了引用计数(滚动到"R 4.0.0"(,它取代了所谓的NAMED mechanism。这种机制确实适用于值0、1、2,就像您在假设中所写的那样。

然而,在我看来,NAMED机制的主要目的似乎是在对象只分配给一个名称时启用就地修改,而不是查找未引用的对象。

所以这不是一个完整的答案,但它至少在一定程度上帮助了我。也许另一个可以完成GC如何找到不再引用的对象的部分

最新更新