发布日期:2018-03-26
启动JVM时的Xms和Xmx参数是什么?+ 查看更多
启动JVM时的Xms和Xmx参数是什么?
+ 查看更多
发布日期:2018-03-10 10:58
分类:JAVA
浏览次数:657
请解释在JVM中如何使用Xms和Xmx参数,它们的默认值是什么?
回答
标志Xmx指定了Java虚拟机(JVM)的最大内存分配池的大小,而Xms指定初始内存分配池的大小。这意味着你的JVM将以Xms内存量启动,并且能够使用最大为Xmx的内存量。举个例子,若代码如下,将会以256MB的内存量启动JVM,并将允许该进程使用高达2048MB的内存:
java -Xmx2048m -Xms256m
还可以以多种单位(例如,千字节,兆字节等)指定内存标志的大小。
-Xmx1024k -Xmx512m -Xmx8g
Xms标志没有默认值,Xmx通常具有256MB的默认值。当遇到java.lang.OutOfMemoryError时,通常这些标志会派上用场。
当使用这些设置时,请记住这些设置是针对JVM的堆,并且JVM可以使用更多的内存,而不仅仅是分配给堆的大小。摘自Oracle的文档:
当使用这些设置时,请记住这些设置是针对JVM的堆,并且JVM可以使用更多的内存,而不仅仅是分配给堆的大小。摘自Oracle的文档:
请注意,JVM使用的内存不仅仅是堆。 例如,Java方法,线程栈和本地句柄被分配在与堆分开的内存中,JVM内部数据结构也是如此。