JVM核心参数图解

前言

作为一名Java开发工程师,基本上都要接触到JVM,实际开发中也许也会遇到JVM的相关问题,面试中肯定也会问到JVM的相关知识。所以今天这篇主要分享JVM的各个参数所代表的意思并且通过图解的方式帮助读者更加好理解。

JVM核心参数

在JVM里有几个比较核心的参数,今天就主要来讲这几个:

-Xms:JVM初始堆内存大小
-Xmx:JVM堆内存的最大值
-Xmn:JVM中新生代大小
-XX:PermSize:永久代大小
-XX:MaxPermSize:永久代最大值
-Xss:JVM每个线程的大小

下面我们就对上面列举的几个核心参数进行说明。

1、-Xms和-Xmx分别表示JVM初始堆内存大小和堆内存最大值

这两个参数主要作用就是限定JVM中堆内存的大小。
在这里插入图片描述

2、-Xmn:表示JVM堆内存中新生代的大小

一般设置完堆内存,然后用堆内存-新生代大小=老年代大小
在这里插入图片描述

3、-XX:PermSize和-XX:MaxPermSize,分别代表永久代的大小和永久代的最大值

如果在JDK8以后,永久代被元空间替代了,所以这两个参数变成了-XX:MetaspaceSize和-XX:MaxMetaspaceSize。这两个参数就是限定永久代的大小。

实际用元空间代替永久代可以避免OOM,因为元空间用的是本地内存,不同于永久代是有上限的。更深层的原因是要合并HotSpot和JRockit,然后JRockit没有永久代,所以就使用了元空间。

在这里插入图片描述

4、-Xss:这个参数限定了JVM每个参数的大小

每个线程都有自己一个虚拟机栈,每次执行一个方法,就会把方法的栈帧压入栈中,方法执行完,该栈帧就会从线程里的栈出栈
在这里插入图片描述

启动系统的时候配置JVM参数

在自己的编译器(以Idea举例)设置启动时JVM参数,可以加快Idea的编译速度

在启动的main类选择==Edit Configurations==,然后在==VM options==配置JVM参数即可
在这里插入图片描述

在这里插入图片描述

除了以上的方法外,还有第二种方法是打开==idea.vmoptions==修改配置信息,一般在idea的==Help==菜单下的==Edit Custom VM Options==
在这里插入图片描述

把编译器的堆内存改大就可以使编译速度提高(当然也不是绝对的,大部分情况下可以

线上部署应用的时候如何指定JVM参数

这个其实就很简单,举例采用”java -jar”的方式启动应用,可以采用以下的方式:

1
java -Xms512M -Xmx512M -Xmn256M -Xss1M -XX:PermSize=128M -XX:MaxPermSize=128M -jar test.jar

其他方式部署的也是可以配置启动参数,感兴趣可以自行了解。

最后分享

分享了JVM的核心参数之后,最后想说一句,其实JVM参数该如何配置,应该是根据不同的业务具体的一些场景来决定的,而不是说有一个固定的配置模块,一切都要从业务场景出发。

-------------本文结束感谢您的阅读-------------

本文标题:JVM核心参数图解

文章作者:god-jiang

发布时间:2021年05月15日 - 11:17:26

最后更新:2021年05月15日 - 11:36:35

原始链接:https://god-jiang.github.io/2021/05/15/JVM核心参数图解/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

创作不易,您的支持就是我坚持的动力,谢谢大家!
0%