1

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

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

4

2 回答 2

3

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

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

java -Xmx1024m -jar yourJar.jar

或者,您可以在系统上设置环境变量,JAVA_OPTSJVM 将在启动时尊重您的设置:

JAVA_OPTS="-Xmx1024m"

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

于 2016-06-17T16:35:57.237 回答
1
  • -Xmx<size>:Java 堆的最大大小(年轻代 + 终身代)
  • -Xms<size>: Java Heap 的初始大小(年轻代 + 终身代)
  • -Xmn<size>: 年轻代堆空间的大小

您遇到的问题与 无关-Xms,这是由于您的java命令不完整,确实您需要提供一个 jar,其中包含在META-INF/MANIFEST.MF要启动的类或 FQN 中定义的主类。

于 2016-06-17T16:45:16.093 回答