JAVA垃圾收集

Ans*_*hul 1 java garbage-collection

问:02鉴于:

11. public void genNumbers() {
12.    ArrayList numbers = new ArrayList();
13.    for (int i=0; i<10; i++) {
14.       int value = i * ((int) Math.random());
15.       Integer intObj = new Integer(value);
16.       numbers.add(intObj);
17.    }
18.    System.out.println(numbers);
19. }
Run Code Online (Sandbox Code Playgroud)

哪一行代码标志着intObj引用的对象成为垃圾收集候选者的最早点?

A. Line 16
B. Line 17
C. Line 18
D. Line 19
E. The object is NOT a candidate for garbage collection.
Run Code Online (Sandbox Code Playgroud)

答案:D

困惑为什么答案是D而不是B.请帮助我理解.提前致谢!

And*_*nek 8

您可能认为,因为变量生存期在块结束时结束,所以对象可以被垃圾收集器删除.但是由于该对象已添加到列表中numbers,因此仍然会引用它.因此,它是在结束的生命周期之后,numbers列表也可以被垃圾收集器删除.