更改最大 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 中定义以启动。
正如许多资源中所描述的那样,我试图从命令行使用 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 中定义以启动。