0

我有一个像这样的do-while循环

do {

   SomeObject someObject = new SomeObject();

} while(some condition is met);

我想知道someObject对象的生命周期是什么以及它们何时有资格获得GC collection

4

2 回答 2

9

当当前范围内的任何引用不再可访问任何对象时,它就有资格进行垃圾回收。

在您的示例中,分配给的实例someObject将在创建它的单个循环迭代结束时符合 GC 条件,因为您只有一个对它的引用,并且该引用在循环结束时超出范围堵塞。

但是,这假设您在构造函数执行期间没有在其他地方传递对对象的引用,并且没有其他代码从循环中传递对对象的引用。

于 2012-07-12T21:44:34.830 回答
0

每次结束括号时,都会到达“}”。然后该括号和相应的开始括号之间的所有变量,“{”超出范围并被垃圾收集。

于 2012-07-12T21:43:51.057 回答