相关疑难解决方法(0)

Java Garbage收集器如何处理自引用?

希望是一个简单的问题.以循环链接列表为例:

class ListContainer
{
  private listContainer next;
  <..>

  public void setNext(listContainer next)
  {
    this.next = next;
  }
}

class List
{
  private listContainer entry;
  <..>
}
Run Code Online (Sandbox Code Playgroud)

现在因为它是一个循环链接的列表,当添加一个elemnt时,它在它的下一个变量中有一个对它自己的引用.删除列表中唯一的元素时,条目设置为null.是否需要将ListContainer.next设置为null以及垃圾收集器释放它的内存还是自动处理这样的自引用?

java garbage-collection

22
推荐指数
4
解决办法
8504
查看次数

java循环引用和垃圾收集

让我们考虑以下2个循环引用示例:

直接循环参考

class A {        
    B b;        
}

class B {
    A a;
}
Run Code Online (Sandbox Code Playgroud)

WeakReferenceing

class A {
    B b;
}

class B {
    WeakReference<A> aRef;
}
Run Code Online (Sandbox Code Playgroud)

@Jon Skeet回答的以下SO问题清楚地表明,只要没有来自已知根的"GC行走"存在于循环中,直接的示例也将被垃圾收集.

我的问题如下:

是否有任何理由表现或以其他方式使用或不使用示例2中表示的习语 - 使用WeakReference的习语?

java performance garbage-collection cyclic-reference

3
推荐指数
1
解决办法
1916
查看次数