更改最大Java堆大小

时间:2016-06-17 16:34:10

标签: java heap-size

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

而且,当我直接从程序中检查时: long heapMaxSize = Runtime.getRuntime().maxMemory(); heapMaxSize等于954728448,大约是1Gb。

2 个答案:

答案 0 :(得分:3)

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

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

java -Xmx1024m -jar yourJar.jar

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

JAVA_OPTS="-Xmx1024m"

关于您的第二个问题,我会推荐您What are Runtime.getRuntime().totalMemory() and freeMemory()?,因为它会澄清Runtime.getRuntime().maxMemory()和朋友返回的值。

答案 1 :(得分:1)

  • -Xmx<size>:Java堆的最大大小(年轻代+终身代)
  • -Xms<size>:Java堆的初始大小(年轻代+终身代)
  • -Xmn<size>:年轻一代堆空间的大小

您遇到的问题与-Xms无关,这是因为您的java命令不完整,实际上您需要提供一个jar,其中包含{ {1}}或要启动的类的FQN。