[英]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.