字符串对象占用的内存

Cha*_*nya 0 java

我正在浏览StringsJava牧场网站,并在垃圾收集部分的声明中说:

与大多数对象不同,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,我们也面临同样的问题?

pax*_*blo 6

字符串是一样的字符串文字.

字符串文字类似于"paxdiablo"源代码.从用户获取字符串不会创建字符串文字,它只是创建字符串数据本身,这垃圾收集.

基本上,该代码片段的内容是,在以下代码中:

String xyzzy = "plugh";
Run Code Online (Sandbox Code Playgroud)

"plugh"字符串文字永远不会消失成比特桶,虽然一些其它构造的字符串(即,非文字)的可能.