java - http请求得到的字符串会保存在常量池中吗?

标签 java string permgen

我理解如下声明的String会保存在常量池中:

例如。

String a = "test'; 

然后测试将被保存在池中

我想知道字符串是从方法中获取的,例如从网络表单发布的请求参数中获取的,还是从文件中读取的。 例如。

String name = request.getRequestParameter("name");

name中的值会保存在常量池中吗?我假设不是?因为否则你很快就会遇到内存不足的 perm gen 错误?

谁能教教我?

谢谢

最佳答案

没有。 String#intern documentation 中描述了字符串何时以及如何被 interned和 JLS Section 3.10.5 .基本上,文字和(其他)字符串常量是自动驻留的,但除非您明确地这样做,否则其他任何东西都不可能。

顺便说一句,您似乎假设驻留字符串永远不会被垃圾回收。我在 Java 文档中没有看到任何内容,并且 at least one person声称他的测试表明它们实际上是 GC,这表明实习生池使用了某种形式的弱引用。

关于java - http请求得到的字符串会保存在常量池中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15309997/

相关文章:

java - 制作带有多个圆圈的进度条

java - JAXB 注释在 getter、setter 和成员上的区别是什么?

c# - 如何解析字符串并获取公式?在 C#

c++ - 即使在向其添加新成员后,结构大小也保持不变

Tomcat PermGen 内存

java - 我有 JAXB 类加载器泄漏吗

java - 如何在 Java 中搜索 XML 文件,然后输出 XML 文件名?

java - javax MySQL 的连接池

java - 为什么 Java 中没有 String.Empty?

java - Tomcat PermGen Space上的Spring MVC不断增加