Java8中的字符串池

Java8中的字符串池,java,Java,我在读java 8中的内存管理。它谈到了元空间,但没有谈到字符串池。你能告诉我java 8中的字符串池发生了什么吗 提前谢谢。 Rajesh在java7本身上做了更改,常量池已从permgen空间移动到典型的堆空间(池行为仍然相同),在Java8中,permgen空间已被完全删除。元空间与常量池无关,特别是,它对所有对象都是通用的。www.oracle.com/technetwork/java/javase/8-whats-new-215071.html 这是Java8发行说明,似乎与Strin

我在读java 8中的内存管理。它谈到了元空间,但没有谈到字符串池。你能告诉我java 8中的字符串池发生了什么吗

提前谢谢。
Rajesh

在java7本身上做了更改,常量池已从permgen空间移动到典型的堆空间(池行为仍然相同),在Java8中,permgen空间已被完全删除。元空间与常量池无关,特别是,它对所有对象都是通用的。

www.oracle.com/technetwork/java/javase/8-whats-new-215071.html

这是Java8发行说明,似乎与String.intern无关。这里没有什么区别: 在Java6和Java7中,-XX:StringTableSize参数的默认值是1009,直到Java7u40。在Java7U40中它增加到了60013(Java8中也使用了相同的值)。这很微妙,但有很大的性能优势。 有关更多信息,请查看此博客帖子:

字符串池的概念没有改变,但从java 7开始,字符串池是在堆内存中而不是在permgen中创建的。这样做的好处是字符串池中未引用的变量将由JVM垃圾收集器处理。因此,它将在空间上得到改进。

Java 8中没有发生任何特殊情况。编译时字符串仍然放在一个池中,如果您愿意,您仍然可以在程序中实习自己的字符串。你为什么认为这应该改变如果它被移除了,你就会知道了。