我經歷的Java ranch site for Strings和下垃圾收集部分,說整個聲明是:內存對象
不像大多數的對象,字符串總是從字符串常量池給他們 參考。這意味着他們總是有一個 引用他們,因此,沒有資格收集垃圾 。
如果我有一個Java bean類,例如Web應用程序 - 如員工
public class Employee {
int employeId;
String firstName;
String lastName;
String fullName = firstName + lastName; // or firstName.concat(lastName);
.... Setters & Getters....
}
如果應用程序創建這麼多的員工,所以這個bean被填充基於請求參數每次。此外,如果應用程序提供了搜索功能,用戶可以根據名字和姓氏查找員工,那麼我們需要填充此bean並將其傳遞到請求範圍中,以便用戶可以看到結果。
在這種情況下,應用程序正在爲firstName,lastName和fullName創建很多字符串。根據Java牧場網站給出的解釋,在一段時間之後我們是否會收到OutOfMemory
錯誤?另外假設如果我只有firstName和lastNname又是字符串,即使我們沒有fullName,我們也面臨同樣的問題?
當清理引用它們的類時,可以清理字符串文字。在許多應用程序中,這絕不會發生,但這並不意味着它們永遠不合格。 –