启动JVM时-Xms和-Xmx参数是什么?

请解释JVM中XmsXmx参数的使用。它们的默认值是什么?

2503341 次浏览

标志Xmx指定Java虚拟机(JVM)的最大内存分配池,而Xms指定初始内存分配池。

这意味着您的JVM将以Xms的内存量启动,并且最多可以使用Xmx的内存量。例如,像下面这样启动JVM将以256 MB的内存启动它,并允许进程使用最多2048 MB的内存:

java -Xms256m -Xmx2048m

内存标志也可以以不同的大小指定,例如千字节、兆字节等。

-Xmx1024k-Xmx512m-Xmx8g

Xms标志没有默认值,Xmx通常具有256 MB的默认值。这些标志的常见用途是当您遇到java.lang.OutOfMemoryError时。

使用这些设置时,请记住这些设置是针对JVM的的,并且JVM可以并且将使用更多的内存,而不仅仅是分配给堆的大小。从Oracle留档

请注意,JVM使用的内存不仅仅是堆。例如Java方法、线程堆栈和本机句柄分配在与堆分开的内存中,以及JVM内部数据结构。

运行命令java -X,您将获得所有-X选项的列表:

C:\Users\Admin>java -X-Xmixed           mixed mode execution (default)-Xint             interpreted mode execution only-Xbootclasspath:<directories and zip/jar files separated by ;>set search path for bootstrap classes and resources-Xbootclasspath/a:<directories and zip/jar files separated by ;>append to end of bootstrap class path-Xbootclasspath/p:<directories and zip/jar files separated by ;>prepend in front of bootstrap class path-Xdiag            show additional diagnostic messages-Xnoclassgc       disable class garbage collection-Xincgc           enable incremental garbage collection-Xloggc:<file>    log GC status to a file with time stamps-Xbatch           disable background compilation-Xms<size>        set initial Java heap size.........................-Xmx<size>        set maximum Java heap size.........................-Xss<size>        set java thread stack size-Xprof            output cpu profiling data-Xfuture          enable strictest checks, anticipating future default-Xrs              reduce use of OS signals by Java/VM (see documentation)-Xcheck:jni       perform additional checks for JNI functions-Xshare:off       do not attempt to use shared class data-Xshare:auto      use shared class data if possible (default)-Xshare:on        require using shared class data, otherwise fail.-XshowSettings    show all settings and continue-XshowSettings:all         show all settings and continue-XshowSettings:vm          show all vm related settings and continue-XshowSettings:properties  show all property settings and continue-XshowSettings:locale      show all locale related settings and continue

-X选项是非标准的,如有更改,恕不另行通知。

我希望这能帮助你理解XmsXmx以及许多其他最重要的事情。:)

问题本身已经在上面解决了。只是添加了部分默认值。

根据http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html

Xmx的默认值取决于平台和系统中可用存储器的数量。

您可以在IDE中指定它。例如,对于运行配置vm参数中的Eclipse。您可以输入-Xmx800m -Xms500m作为

在此处输入图像描述

-Xms是启动的初始堆大小,但是,在工作过程中,由于用户的不活动或GC迭代,堆大小可能小于-Xms。这不是所需的最小堆大小。

-Xmx是最大堆大小