更改最大 java 堆大小

Changing maximum java heap size

正如许多资源中所描述的那样,我试图从命令行使用 java -Xms512m 以便将 java 机器的最大堆大小设置为 512 Mb。 但是出了点问题,命令行显示如下

并且,正如我直接从程序中检查的那样: long heapMaxSize = Runtime.getRuntime().maxMemory(); heapMaxSize 等于 954728448,大约 1Gb。

这称为 VM 参数,必须在启动 VM(JVM)时指定。

您可以在 运行 您的程序中指定最大堆大小:

java -Xmx1024m -jar yourJar.jar

或者,您可以在系统上设置环境变量 JAVA_OPTS,JVM 将在启动时遵循您的设置:

JAVA_OPTS="-Xmx1024m"

关于你的第二个问题,我建议你参考 What are Runtime.getRuntime().totalMemory() and freeMemory()?,因为它阐明了 Runtime.getRuntime().maxMemory() 和朋友返回的值。

  • -Xmx<size>:Java 堆的最大大小(年轻代 + 老年代)
  • -Xms<size>:Java堆的初始大小(年轻代+老年代)
  • -Xmn<size>:年轻代Heap的大小space

您遇到的问题与-Xms无关,这是因为您的java命令不完整,确实需要提供一个带有main [=28]的jar =] 在 META-INF/MANIFEST.MF 或 class 的 FQN 中定义以启动。