[英]Number of objects eligible for garbage collection
我不確定我是否已完全理解垃圾收集器的行為,因此我將根據先前的問題提出這個問題 。
在此程序中:
class A {
Boolean b;
A easyMethod(A a){
return new A();
}
public static void main(String [] args){
A a1 = new A();
A a2 = new A();
A a3 = new A();
a3 = a1.easyMethod(a2);
a1 = null;
// Some other code
}
}
有多少對象可以進行垃圾收集? 我認為,盡管a3
永遠不會為空,但是分配給它的第一個對象( new A()
)也應該被垃圾收集,因為沒有引用指向它。 我對嗎? 因此,我認為正確的答案將再次是2個對象。 實際是什么?
我認為,盡管
a3
永遠不會為空,但是分配給它的第一個對象(new A()
)也應該被垃圾收集,因為沒有引用指向它。 我對嗎? 因此,我認為正確的答案將再次是2個對象。
是的,這是完全正確的。 a3
最初指向A
一個實例,但是在將該變量重新分配為指向另一個實例之后,不再有任何方法可以到達原始實例,因此該原始實例可以進行垃圾回收。
是的,你是對的。
a1 = <instance 1>
a2 = <instance 2>
a3 = <instance 3>
a3 = <instance 4> //as a returned value
a1 = null
因此, instance 1
和instance 3
不再被引用,因此可以被收集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.