考慮下面的代碼當對象不再使用但仍然佔用內存時,我們可以稱它爲一個對象嗎?
String variable = "";
variable = "3";
variable = "4";
創建由於字符串是不可變的,會有三個對象。但只有值被分配給「4」的最後一個對象纔是有效的。
根據定義,前面行(變量=「3」和變量=「」)中使用的對象仍在內存中。
我的問題是,當對象不再引用,我還可以把它稱爲一個對象或作爲僅有未可用存儲器位置
考慮下面的代碼當對象不再使用但仍然佔用內存時,我們可以稱它爲一個對象嗎?
String variable = "";
variable = "3";
variable = "4";
創建由於字符串是不可變的,會有三個對象。但只有值被分配給「4」的最後一個對象纔是有效的。
根據定義,前面行(變量=「3」和變量=「」)中使用的對象仍在內存中。
我的問題是,當對象不再引用,我還可以把它稱爲一個對象或作爲僅有未可用存儲器位置
對象始終是對象。如果可以訪問,則在下一個GC週期中不符合GC要求。否則,它有資格獲得GC。
我認爲你仍然可以調用它的對象,因爲你可以使用this.variable =「3」; 也許
對於初學者來說,String對象不會在一般堆中創建,它們寧願駐留在字符串池中。所以,即使「」和「3」沒有被任何變量引用,它們仍然會留在池中,等待將來使用(或者被銷燬)。所以不,他們不在不可用的內存位置。
要回答你的問題,他們仍然會被稱爲對象。
它們不再被代碼引用,它們實際上只是內存中某個位置的字節模式,但它們仍然是對象。 GC必須對該對象進行處理,以便能夠最終確定它。因此,他們仍然「功能」爲對象...
它並不真正的問題是什麼,你稱呼它。 – 2012-07-23 14:54:02
:D是什麼?你可以稱它爲一個對象,垃圾,不可用的內存位置,字符串,實例等等...... – 2012-07-23 14:54:49