Будет сборщик мусора (теоретически) собрать такую структуру?Сбор мусора/связанный список
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's GC в специальном. Вы случайно знаете какую-либо документацию сборщика мусора Go? – topskip
@topskip: К сожалению, я не знаю о такой документации. Раньше это был консервативный GC, в настоящее время он в основном является точным GC с небольшим количеством оставшихся мест (я думаю, что записи о вызовах [стоковые кадры] еще не точны). – zzzz