垃圾收集器(理论上)是否会收集这样的结构?垃圾收集/链接列表
package main
type node struct {
next *node
prev *node
}
func (a *node) append(b *node) {
a.next = b
b.prev = a
}
func main() {
a := new(node)
b := new(node)
a.append(b)
b = nil
a = nil
}
这应该是一个链表。 a
积分b
,b
积分返回a
。当我删除a
和b
(最后两行)中的引用时,两个节点不能再访问。但是每个节点仍然有一个参考。去垃圾收集器会删除这些节点吗?
(显然不是在上面的代码中,而是在一个较长的运行程序中)。
有没有处理这些问题的垃圾回收器的任何文档?
谢谢!我会尽量多了解一些GC,特别是Go的GC。你偶然知道Go的垃圾收集器的任何文档吗? – topskip
@topskip:不幸的是我不知道这样的文档。它曾经是一个保守的GC,目前主要是一个精确的GC,剩下的地方很少(我认为调用记录[堆栈帧]还不精确)。 – zzzz