小编典典

是什么触发了Java垃圾收集器

java

我对Java中的垃圾回收如何工作感到有些困惑。

我得到一个对象,当它不再有实时引用时,就可以进行垃圾回收,但是如果它引用了实时对象又该怎么办?

可以说我有一个节点集合,再次引用了更多节点

List
1 -> Node a -> Node b
2 -> Node c -> Node d
3 -> Node d -> Node c
4 -> Node e
5

现在,如果我删除列表,则应该对节点cd和e进行垃圾回收。节点e没有更多引用,而节点c和d具有循环引用。

但是节点a呢?会被垃圾收集吗?

节点b是否具有外部实时引用会有所不同吗?假设节点b从另一个地方引用了它,那会使节点成为内存吗?


阅读 188

收藏
2020-11-30

共1个答案

小编典典

有一组根引用(当前局部变量,静态引用,堆栈帧的操作数堆栈)被认为是活动的。从此根引用根目录无法访问的所有内容都可以进行垃圾回收。

节点a没有指向它的引用。因此,即使它指向活动对象,也符合gc的资格。由于节点b具有实时引用,因此不会得到gc’ed。

2020-11-30