[英]At what line can this object be considered to be garbage collected. Java
因此,我的理解是在第1行,創建了一個新對象,它由obj引用。 在第2行,obj引用了另一個新對象。 因此我們在第1行創建的對象可以進行垃圾回收,因為任何實例均未引用該對象。 但是測試問題的答案在第3行。原因? 答案正確嗎?
Object obj = new Object(); //line 1
obj = new Object(); //line 2
obj = null; //3
編輯:詢問在第1行創建的對象何時可以進行垃圾收集。
在現實世界中,這個問題(由標題引起)沒有明確的答案。
我知道這應該是一個帶有簡單答案的學術性問題,但是有很多假設可以使我可以對想要存在的任何答案進行法律裁決。
即使我們沒有從帽子中拉出任何兔子,答案仍將取決於“在第X行”是指執行該命令之前還是之后
垃圾收集器正在檢查活動對象,並丟棄不存在的任何對象。 創建obj
,要定義它的類型,因為它使編譯器知道要為該地址分配多少空間,因為Type Object
將在那里存在。 當第二行執行時,new將創建該對象的全新實例,並且您將其地址分配給obj
。 因此,在將obj
重新分配為引用新對象之后,舊對象仍然存在,但不再被引用。 它可能會被標記為要收集,因為它占用了堆中的空間,但是不再處於活動狀態。 第3行也一樣,除了前面提到的,您要為其分配的地址為null
,並且沒有創建新對象。 因此,以前由obj
引用的obj
現在是死對象,而垃圾回收人員將其刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.