Java垃圾收集的确切功能

Java垃圾收集的确切功能,java,memory-management,memory-leaks,tree,garbage-collection,Java,Memory Management,Memory Leaks,Tree,Garbage Collection,我对Java非常陌生,我知道在这个网站上有很多关于Java中垃圾收集的问题,所以我希望得到否决——但我还没有找到一个能明确说明我的具体情况的答案 我正在用Java构建一个2-3树。2-3树的每个节点都包含对自定义类型的线性链表头的引用,这意味着这些链表也是动态分配的 基本上: A <-- my root reference / \ B,C D / | \ / \ E F

我对Java非常陌生,我知道在这个网站上有很多关于Java中垃圾收集的问题,所以我希望得到否决——但我还没有找到一个能明确说明我的具体情况的答案

我正在用Java构建一个2-3树。2-3树的每个节点都包含对自定义类型的线性链表头的引用,这意味着这些链表也是动态分配的

基本上:

          A           <-- my root reference
     /         \
   B,C          D
 /  |  \       /   \
E   F   G     H     I
                   /
                  J

A是的。但是,您不需要显式地
null
A
。所有必要的是,
A
不再是可访问的。无法保证GC何时(或是否)实际发生。谢谢。我认为超出范围的引用也会使对象符合GC的条件(假设该对象没有在其他地方引用)。另见。还有一个例外——如果你有任何内部字符串,它们不会被释放,所以这是造成内存泄漏的一种方法。但除此之外,您的问题的答案可以在Elliott的评论中找到。还要注意,如果除此树之外没有其他引用,则整个树的对象只能进行垃圾收集。因此,如果不再引用
A
,但如果您将
I
的引用保留在某个位置,则
I
J
的所有内容都将保持非垃圾回收状态。