请说明JVM 中Xms和Xmx参数的使用。它们的默认值是多少?
该标志Xmx指定Java虚拟机(JVM)的最大内存分配池,而Xms指定初始内存分配池。
Xmx
这意味着你的JVM将以Xms一定数量的内存启动,并且将能够使用最大Xmx数量的内存。例如,启动如下所示的JVM将以256 MB的内存启动它,并将允许该进程使用最多2048 MB的内存:
Xms
java -Xms256m -Xmx2048m
也可以以不同的大小(例如千字节,兆字节等)指定内存标志。
-Xmx1024k -Xmx512m -Xmx8g
该Xms标志没有默认值,Xmx通常默认值为256 MB。这些标志的常见用法是遇到java.lang.OutOfMemoryError。
java.lang.OutOfMemoryError
使用这些设置时,请记住,这些设置用于JVM的堆,并且JVM可以/将使用的内存比分配给堆的大小更多。从Oracle文档中:
请注意,JVM使用的内存不仅仅是堆。例如,Java方法,线程堆栈和本机句柄与堆以及JVM内部数据结构分开分配在内存中。