You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改JVM String Pool大小?JDK11用XX:StringTableSize报错怎么办

问题原因与解决方案

1. 核心错误为语法不规范

你给出的两种参数写法都不符合HotSpot虚拟机-XX系列参数的定义规则:
所有-XX开头的数值类配置参数,标准语法为 -XX:<参数名>=<参数值>,你两次都漏写了StringTableSize参数名,也缺少必要的等于号,才会触发无效标识报错:

error: invalid flag: -XX1234
该错误是因为你直接把参数值拼接在-XX后面,完全没有填写参数名、冒号和等于号
error: invalid flag: -XX:1234
该错误是因为你只加了冒号,仍然漏写了StringTableSize参数名和等于号

2. 官方文档找不到-XX参数的原因

-XX开头的所有参数都属于HotSpot虚拟机的非标准私有参数,不属于Java SE官方规范约定的标准参数,因此在Java SE通用参考文档中不会收录,你需要查询对应版本HotSpot虚拟机的专属参数文档才能看到相关说明。

3. 参数有效性确认

JDK11版本中-XX:StringTableSize参数并未废弃,完全可以正常使用。
如果你要将字符串常量池大小设置为1234,正确的命令行写法如下:
java -XX:StringTableSize=1234 你的主类全限定名

附加注意事项

  • StringTableSize的取值必须为正整数,官方建议设置为素数,可降低哈希冲突概率,提升字符串常量池的查询性能
  • 你可以执行java -XX:+PrintFlagsFinal -version | grep StringTableSize命令,查看当前环境的默认StringTableSize取值,也可以用该命令验证参数配置后是否生效

内容的提问来源于stack exchange,提问作者HusenPatel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:15:03