JVM常用参数及调优教程(Java8)

1、 为什么要进行JVM参数调优
发挥服务器的最大性能,节约运营成本。在调优之前需要对JVM的各数据区的作用及原理进行学习。

2、 导致OOM的常见原因
(1)请求创建一个超大对象,通常是一个大数组。
(2)超出预期的访问量/数据量,通常是上游系统请求流量飙升,常见于各类促销/秒杀活动,可以结合业务流量指标排查是否有尖状峰值。
(3)过度使用终结器(Finalizer),该对象没有立即被 GC。
(4)内存泄漏(Memory Leak),大量对象引用没有释放,JVM 无法对其自动回收,常见于使用了 File 等资源没有回收。
(5)元空间爆满,加载的 class 数目太多或体积太大。
可参考文章:https://blog.csdn.net/kevinxxw/article/details/104881802

3、 GC日志的相关参数
-Xloggc:指定GC日志的存储目录,例如-Xloggc:…/logs/gc.log
-XX:+PrintGC:输出简要GC日志
-XX:+PrintGCDetails:输出详细GC日志
-XX:+PrintGCTimeStamps:GC发生的时间,系统启动后的毫秒数
-XX:+PrintGCDateStamps:输出GC的时间戳,以日期的形式:2014-04-04T21:53:59.234+0800
-XX:+PrintHeapAtGC:GC前后打印出堆的信息
-verbose:gc:与-XX:+PrintGC一样
-XX:+PrintReferenceGC:打印年轻代各个引用的数量以及时长
-XX:NumberOfGClogFiles=1:GC日志文件的循环数目
-XX:GCLogFileSize=1M:控制GC日志文件的大小
配置GC日志有助于我们排查问题,解决问题。

4、 栈参数
-Xss 设置栈大小
提示:当栈发生内存溢出时,系统会抛出StackOverflowError栈溢出错误。

5、 堆参数
-Xms:堆内存初始大小
-Xmx:堆内存最大大小(建议设置与初始大小相等)
-Xmn:新生代的大小
-XX:SurvivorRatio:设置新生代中eden区和from/to区的比列
-XX:NewRatio=老年代/新生代的比列

6、 方法区参数
-XX:MaxMetaspaceSize:设置元空间大小
提示:当元空间内存发生溢出时,会抛出java.lang.OutOfMemoryEeeor:Metaspace,错误。

7、 收集器参数
-XX:+UseSerialGC:设置串行收集器(老年代、新生代)
-XX:+UseParallelGC:设置并行收集器(新生代,老年代串行)
-XX:+UseParalledlOldGC:设置并行年老代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器(CMS收集器)
-XX:+UseG1GC:打开G1收集器的开关
Java8:默认Parallel Scavenge + Parallel Old组合
Java9、10:默认G1收集器

8、 调优实战
(1) 对tomcat的调优
1.windows环境:配置bin/catalina.bat文件,linux环境:配置bin/catalina.sh文件。
2.我这里用JAVA_OPTS="-Xms300m -Xmx300m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:…/logs/gc.log" 参数进行配置,配置好了之后,可以启动tomcat(需提前配置好用户名密码:tomcat-users.xml),访问tomcat页面,点击Server Status登录,会出现如下页面。
在这里插入图片描述
3.参数说明:Free Memory:可用堆内存、Total Memory:当前总堆内存、Max Memory:最大堆内存,type:内存类型、initial:初始化内存、total:总内存、maximum:最大内存、used:已用内存。
4.日志在tomcat的logs目录下,我们配置的目录,最好是已经存在的目录,不然可能会不生成日志。
在这里插入图片描述
(2) 对SpringBoot项目的调优
1.对于SpringBoot项目,我们只需要在运行jar包的时候,把相关的JVM参数加上即可,接下来,我演示下。
2.这里我用nohup java -Xms300m -Xmx300m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:./logs/gc.log -jar ruoyi-admin.jar & 启动项目。
3.启动成功后,GC日志如下
在这里插入图片描述

演示到此结束,谢谢!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值