-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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐