-Xms 设置堆空间(年轻代)的初始内存大小,等价于 -XX:InitialHeapSize
-Xmx 设置堆空间(老年代)的最大内存大小,等价于 -XX:MaxHeapSize
一旦堆区中的内存大小超过“-Xmx”所指定的最大内存时,将会抛出OutofMemoryError异常。
-X:jvm运行参数
ms: memory start
mx:memorry max
默认堆空间大小:
初始内存大小:物理内存大小 / 64
最大内存大小:物理内存大小 / 4
通过 jvisualvm.exe (在jdk的安装目录/bin下)图形化方式查看堆信息:
/**
* 设置: -Xms10m -Xmx10m
*/
public class XmsTest {
public static void main(String[] args) throws InterruptedException {
Thread.sleep(1000_000);
}
}
启动 jvisualvm,在jvm参数 tab页可以看到设置的堆内存信息。
通常会将-Xms和-Xmx两个参数配置相同的值
原因:假设两个不一样,初始内存小,最大内存大。在运行期间如果堆内存不够用了,会一直扩容直到最大内存。如果内存够用且多了,也会不断的缩容释放。频繁的扩容和释放造成不必要的压力,避免在GC之后调整堆内存给服务器带来压力。
如果两个设置一样的就少了频繁扩容和缩容的步骤。内存不够了就直接报OOM