Joh*_*ohn 2 java memory string
在Servlet类中,我正在检查
if("Mail".equals(request.getParameter(mode))||"Chat".equals(request.getParameter(mode))){}
我的问题是为字符串"Mail"和"Chat"分配的内存.它是否会为每个对此servlet的请求创建新的字符串对象.GC怎么样?
Jon*_*eet 6
不,它不会每次都创建一个新对象.字符串常量被实现 - 它们被创建一次并放入一个特殊的池中.
每次运行代码时,它不仅不会创建新的字符串,而且如果在代码中的其他位置使用常量"Mail"或"Chat",它们也将使用相同的字符串对象.
从Java语言规范部分3.10.5:
每个字符串文字都是类String(第4.3.3节)的实例(第4.3.1节,第12.5节)的引用(第4.3节).String对象具有常量值.字符串文字 - 或者更一般地说,作为常量表达式(第15.28节)的值的字符串 - 是"实例化"以便使用String.intern方法共享唯一实例.
归档时间:
15 年,3 月 前
查看次数:
1153 次
最近记录: