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"的方式启动应用,可以采用以下的方式:

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

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

最后分享

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

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值