簡體   English   中英

有多少對象可以進行垃圾收集?

[英]How many objects will be eligible for garbage collection?

因此,我最近去過工作面試,並被問到以下問題。 (實際上,這只是一篇測試文章,所以我不能問任何問題)

在main方法的最后,有多少個對象可以進行垃圾回收?

public class Main {
    public static void main(String[] args) {
        Object obj;
        for (int i = 0; i < 5; i++) {
            obj = new Object();
        }
        obj = null;
    }
}

(A)0

(B)1

(C)5

我知道它是0,因為至少有一個對象( obj )將被垃圾回收,但是我也知道obj並不是真正的對象,它只是對其的引用。 所以我的答案是5。

那是對的嗎? 如果沒有,那為什么呢?

您的答案5 is correct

在這里,通過for循環創建了總共5個對象,所有這些對象都可以在方法結束時進行垃圾回收。

大概是0

編譯器可能會進行一些優化,從而消除整個循環,並避免首先創建在循環中創建的五個對象。

因此,如果沒有進行編譯器優化,則會在循環內創建5個對象,並且它們的引用將在變量obj覆蓋,最后,變量將引用分配給null的最后一個對象。

暫無
暫無

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

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