Lui*_*Sep 1 java garbage-collection
我正在从一本java认证书中做一些练习.在有关垃圾收集的问题中,它们提供以下代码:
class Test {
private Demo d;
void start() {
d = new Demo();
this.takeDemo(d);
}
void takeDemo(Demo demo) {
demo = null;
demo = new Demo();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是
何时是在第4行创建的Demo对象,是否有资格进行垃圾回收?
我会说它可以在指令demo = null之后收集; 因为不再引用它,但他们给出的答案是:
当运行此代码的实例符合垃圾回收条件时
我错过了什么?
Java是"按值传递",因此该语句demo = null;仅影响demoin 的本地副本takeDemo.它不设置d到null,这是因此,只要外围实例是可到达的到达.