1286

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

4

5 回答 5

1666

该标志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 内部数据结构中。

于 2013-02-07T23:29:31.977 回答
364

运行命令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以及许多其他最重要的事情。:)

于 2013-11-28T11:03:24.147 回答
18

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

在此处输入图像描述

于 2015-02-17T09:50:42.757 回答
16

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

-Xmx最大堆大小

于 2020-01-02T07:04:01.507 回答
14

这个问题本身已经在上面讨论过了。只需添加部分默认值。

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

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

于 2014-02-07T13:43:06.637 回答