我理解如下声明的String会保存在常量池中:
例如。
String a = "test';
然后测试将被保存在池中
我想知道字符串是从方法中获取的,例如从网络表单发布的请求参数中获取的,还是从文件中读取的。 例如。
String name = request.getRequestParameter("name");
name中的值会保存在常量池中吗?我假设不是?因为否则你很快就会遇到内存不足的 perm gen 错误?
谁能教教我?
谢谢
最佳答案
没有。 String#intern
documentation 中描述了字符串何时以及如何被 intern
ed和 JLS Section 3.10.5 .基本上,文字和(其他)字符串常量是自动驻留的,但除非您明确地这样做,否则其他任何东西都不可能。
顺便说一句,您似乎假设驻留字符串永远不会被垃圾回收。我在 Java 文档中没有看到任何内容说,并且 at least one person声称他的测试表明它们实际上是 GC,这表明实习生池使用了某种形式的弱引用。
关于java - http请求得到的字符串会保存在常量池中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15309997/