我们可以避免在java中实习字符串吗?

Sur*_*ran 2 java performance permgen string-interning

我们可以完全禁用字符串的实习.它可能不是真的有用,但只是一个想法.我可以想到至少有一点可以提供帮助,即在jvm调整期间,控制perm gen的大小.

例如,如果我给出一个OSGI框架,任何人都可以添加任意数量的自己的捆绑包,每个捆绑字符串实习可以完全搞砸我的调整参数.(当然我知道我们应该对给定的固定发行版进行调整,但仍然......)

有什么想法吗!!

Bri*_*ach 6

Permgen的大小/用法不是现代JVM的问题.当没有对它们的剩余引用时,可以为垃圾收集器提供实际字符串.

(不,你不能"关闭"字符串文字的实习).

  • 多奇怪,考虑到我一直看着它没有任何东西被卸载.你的陈述不正确.http://stackoverflow.com/questions/1091045/is-it-good-practice-to-use-java-lang-string-intern/2012661#2012661该答案中的代码将向您显示确实实习的字符串是GC' d在现代JVM中 (2认同)