我想了解字符串常量池是否有任何默认大小?
Java 上不同版本的字符串常量池是否有任何变化? 字符串常量池的默认大小是多少?
根据本文,字符串常量池大小因不同的 Java 版本和发行版而异(但文章本身已有 3 年多的历史,因此从那时起可能对最新的 Java 版本进行了一些更改(。
字符串池作为 HashMap 实现。所以
- 在Java 6之前,默认池大小为 1009 个条目,并受 PermGen 大小的限制,PermGen 大小在 Java6u30 发行版中变得可配置。
- 在Java 7中,默认哈希表大小增加到 60013 个条目,并且仍可使用标志
-XX:StringTableSize=<value>
进行配置。 - 在Java 8中,PermGen区域被删除,常量池被移动到堆中,使其大小仅受程序内存限制的限制(并且它仍然接受表大小选项(。
在大多数JVM中,Perm Space的默认大小约为"64MB"。