簡體   English   中英

符合垃圾收集條件的對象數

[英]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 1instance 3不再被引用,因此可以被收集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM