垃圾回收器(理论上)会收集这样的结构吗?
这应该是一个链表。
(显然不是上面的代码,而是在长时间运行的程序中)。
是否有处理这些问题的垃圾回收器文档?
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
的引用(最后两行),这两个节点将不再可访问。但每个节点仍然有一个引用。那么,go垃圾回收器仍然会移除这些节点吗?(显然不是上面的代码,而是在长时间运行的程序中)。
是否有处理这些问题的垃圾回收器文档?