我碰到下面的文字中梁丹尼的關於Java編程的最新著作來到(頁386,第10版。):被攔截的字符串是否有資格在Java 8中進行垃圾收集?
執行以下代碼更改字符串的內容是什麼?
String s = "Java"; s = "HTML";
答案是否定的。 ... 第一個String對象在賦值後仍然存在,但它不能再被訪問,因爲變量s現在指向新對象,如圖10.15所示。
基於上述文字,似乎作者認爲字符串對象「Java」不是垃圾收集,即使它不再被引用。我知道Java中interned字符串的存儲位置有一些變化。請記住,上面的書是關於Java SE 8的。
但是根據Java垃圾收集器,未使用的對象(不再被引用的對象)會自動被垃圾收集。
那麼Java SE 8的實際情況是哪種情況?
我不認爲作者聲稱字符串不能被GC'ed;該聲明是非正確的,有人可能會看到它對其他(非字符串)類型也是如此。 –
整個_class_在_code_中仍然帶有對該字符串文字的引用。 –