Answers:
该标志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内部数据结构分开分配在内存中。
OutOfMemoryError
则会发生。
-Xms256m
是“ 256 MiB”,而不是“ 256 MB”,因为它采用二进制幂而不是10的幂。请参阅en.wikipedia.org/wiki/Binary_prefix。另外,由于为多余的Survivor空间预留了一些不可用的空间,因此实际可用的内存量Runtime.getRuntime().maxMemory()
小于通过-Xmx
运行命令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选项是非标准的,如有更改,恕不另行通知。
我希望这将有助于你理解Xms
,Xmx
以及许多其他的事情,才是最重要的。:)
上面已经解决了这个问题。仅添加部分默认值。
按照http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html
Xmx的默认值将取决于平台和系统中可用的内存量。
-Xmx128m -Xms64m
它可以主峰周围有275m
RES MEM,但使用时-Xmx128m -Xms128m
能达到顶峰周围550m
RES MEM使用Java 8最好的办法是强调GC,看看会发生什么...