【问题标题】:How to modify the size of String Pool in JVM?如何修改 JVM 中字符串池的大小?
【发布时间】:2021-11-29 10:10:42
【问题描述】:

我正在阅读一本关于 Java 的书,其中提到了一个修改字符串池大小的选项,该选项是 XX:StringTableSize。当我在命令行中尝试此操作时,我收到一条错误消息,指出这是一个无效标志,我尝试了以下两种方法并发生了相同的错误:

错误:无效标志:-XX1234

错误:无效标志:-XX:1234

什么是错误?我在 Java SE 参考中找不到解决方案,即使我没有看到像“-XX”这样的选项。

这背后的原因是什么,是我犯了语法错误还是此选项已被弃用或其他原因? 我正在使用 JDK 11

【问题讨论】:

  • 请阅读How to ask 并为您的问题添加更多信息,例如,您使用的命令的外观。

标签: java string jvm heap-memory string-pool


【解决方案1】:

您可能传递的值低于允许的最小值。例如,我可以在 OpenJDK 11 上成功运行以下

java -XX:StringTableSize=16777216 TestClass

您还可以参考出色的链接here,了解不同 JDK 版本中可用的不同 VM 选项的摘要。

如果我提供的比允许的少,我会得到这个

java -XX:StringTableSize=10 TestClass

uintx StringTableSize=10 is outside the allowed range [ 128 ... 16777216 ]
Improperly specified VM option 'StringTableSize=10'

过去曾讨论过此类参数支持的有用性和正确性。你可以阅读这些here

【讨论】:

  • 所以我在编译时使用该选项,它在运行时使用,因为我使用它与“javac”一起使用它并与“java”命令一起使用(即在运行时)
  • 没错——它是用于运行时的。还请将此答案标记为已接受为 SO 的良好做法 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 2023-01-10
  • 1970-01-01
  • 2015-06-24
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多