Java 垃圾收集——关于linkedlist的两个案例
案例1: 如果有这样的LinkedList:Java 垃圾收集——关于linkedlist的两个案例,java,garbage-collection,linked-list,Java,Garbage Collection,Linked List,案例1: 如果有这样的LinkedList: A --> B --> C --> D A --> B --> C --> D 如果我将A.next=null,那么图形将是A-->null和B-->C-->D 节点B、C、D是否会被垃圾收集 案例2: 如果有这样的LinkedList: A --> B --> C --> D A --> B --> C --> D 如果我将A.next=A.next.next,那么图形
A --> B --> C --> D
A --> B --> C --> D
如果我将A.next=null
,那么图形将是A-->null
和B-->C-->D
节点B、C、D
是否会被垃圾收集
案例2:
如果有这样的LinkedList:
A --> B --> C --> D
A --> B --> C --> D
如果我将
A.next=A.next.next
,那么图形将是A-->C-->D
,但B仍然像这样指向C:B-->C
节点B
会被垃圾收集吗?案例1
Case 1: If there is a LinkedList like this:
A --> B --> C --> D
if I make A.next = null, so the graph would be A --> null and B --> C --> D
Will node B,C,D be garbage collected?
在这种情况下,如果不存在对B的引用,则B、C、D是垃圾收集的。如果有任何对象引用B,则这三个对象都存在并被视为独立链表
案例2
Case 2: If there is a LinkedList like this:
A --> B --> C --> D
if I make A.next = A.next.next, so the graph would be A --> C --> D but also B still points to C like this: B --> C Will node B be garbage collected?
同样的概念也适用于这里,如果有任何引用,那么B->C再次被视为独立的链表只需make
B.next=null
GC将清除您提到的那些内存!由于它不在您收集实例的逻辑上,所以您创建的任何实例都可以被GC引用,同时通过程序检测到不可访问的
,它将清除它们@ling.s如果我不执行此操作,即使我无法访问节点B,如果我从根A遍历整个列表,谁“指向”(或引用)B,节点B也不会被垃圾收集?如果没有人这样做,那么B是不可到达的。B在任何情况下都可能不是强可达的,但如果它不是平凡可达的,那么故事就到此结束了。看见