本地引用变量是否添加到GC

时间:2016-06-02 16:30:42

标签: java garbage-collection

假设我创建的一个对象是一些任意类,并且包含在不同类中的多个引用变量中,如下所示:

public void foo(){
    Bar bar = someClass.getBar();
    bar.doSomething();
}

GC是否添加和删除了条形参考变量?我理解从someclass.getBar()返回的实际条形对象不会被收集,直到它的所有引用都无法访问,但我不确定条引用变量本身。我的理解是bar引用变量的开销很小。

1 个答案:

答案 0 :(得分:4)

变量bar,其中包含对Bar的对象实例的引用,不包含在堆中,而是包含在堆栈中。用于此方法调用的堆栈帧已被删除'当方法调用退出时。 变量 bar不会被垃圾收集;堆栈中的项目永远不会。

对象实例本身在堆上分配;没有参考时会被垃圾收集;如果局部变量持有对象的引用,则该对象不能被垃圾收集;如果方法已退出,则该引用变量不再存在,并且不会计为对象的引用。

相关问题