我正在浏览Strings的Java牧场网站,并在垃圾收集部分的声明中说:
与大多数对象不同,String文字总是从String Literal Pool中引用它们.这意味着他们总是引用它们,因此不符合垃圾收集的条件.
如果我有一个带有Java bean类的Web应用程序,例如:employee as
public class Employee {
int employeId;
String firstName;
String lastName;
String fullName = firstName + lastName; // or firstName.concat(lastName);
.... Setters & Getters....
}
Run Code Online (Sandbox Code Playgroud)
如果应用程序创建了这么多员工,那么每次都会根据请求参数填充此bean.此外,如果应用程序提供搜索功能,用户可以根据名字和姓氏查找员工,那么我们需要填充此bean并将其传递到请求范围,以便用户可以看到结果.
在这种情况下,应用程序为firstName,lastName和fullName创建了很多字符串.根据Java牧场网站的解释,我们会OutOfMemory在一段时间后得到错误吗?还假设如果我只有firstName和lastNname又是字符串,即使我们没有fullName,我们也面临同样的问题?
字符串是不一样的字符串文字.
字符串文字类似于"paxdiablo"源代码.从用户获取字符串不会创建字符串文字,它只是创建字符串数据本身,这是垃圾收集.
基本上,该代码片段的内容是,在以下代码中:
String xyzzy = "plugh";
Run Code Online (Sandbox Code Playgroud)
的"plugh"字符串文字永远不会消失成比特桶,虽然一些其它构造的字符串(即,非文字)的可能.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |