2012-07-23 68 views
-5

考慮下面的代碼當對象不再使用但仍然佔用內存時,我們可以稱它爲一個對象嗎?

String variable = ""; 
variable = "3"; 
variable = "4"; 

創建由於字符串是不可變的,會有三個對象。但只有值被分配給「4」的最後一個對象纔是有效的。

根據定義,前面行(變量=「3」和變量=「」)中使用的對象仍在內存中。

我的問題是,當對象不再引用,我還可以把它稱爲一個對象或作爲僅有未可用存儲器位置

+4

它並不真正的問題是什麼,你稱呼它。 – 2012-07-23 14:54:02

+0

:D是什麼?你可以稱它爲一個對象,垃圾,不可用的內存位置,字符串,實例等等...... – 2012-07-23 14:54:49

回答

1

對象始終是對象。如果可以訪問,則在下一個GC週期中不符合GC要求。否則,它有資格獲得GC。

0

我認爲你仍然可以調用它的對象,因爲你可以使用this.variable =「3」; 也許

1

對於初學者來說,String對象不會在一般堆中創建,它們寧願駐留在字符串池中。所以,即使「」和「3」沒有被任何變量引用,它們仍然會留在池中,等待將來使用(或者被銷燬)。所以不,他們不在不可用的內存位置。

要回答你的問題,他們仍然會被稱爲對象。

0

它們不再被代碼引用,它們實際上只是內存中某個位置的字節模式,但它們仍然是對象。 GC必須對該對象進行處理,以便能夠最終確定它。因此,他們仍然「功能」爲對象...

參見:When is the finalize() method called in Java?

相關問題