技术自查第二篇:JVM调优案例篇

12 篇文章 0 订阅
本文通过实例分享了JVM性能优化的经验,调整JVM参数后显著降低了各项目的垃圾回收次数。在2核8G的服务器上,针对3个Java项目分别设置了2G的堆内存,并使用ParNewGC和CMS收集器,使得GC回收次数大幅下降,但同时也带来了内存紧张的问题。后续将继续依据GC日志进行优化。
摘要由CSDN通过智能技术生成

前言

很后悔之前没有好好学JVM的相关知识,一知半解,完全没有考虑过JVM性能优化方面。很庆幸刚好有个项目能提供我优化jvm性能。

我负责的案例

一个已上线的,我负责的项目为例子,先说下CPU的大小,2核8G

同时该服务器还运行着三个JAVA项目,每个项目都是JDK1.8环境,每个项目的JVM配置是默认的,没有添加修改,目前网站人数和使用量都不高,但垃圾回收次数就恐怖如斯。

(为什么没用G1回收器,G1在JDK10加强了并发回收器,JDK12增加自动返回堆未使用的内存给系统,G1在JDK12才是完全体,所以先用ParNewGC和CMS)

第一个项目:3天,年轻区回收次数99次,年老区回收3次

第二个项目:4天,年轻区回收次数559次,年老区回收31次

第三个项目 :6天年轻区回收161次,年老区回收3次

 

 为了解决以上问题:

同时还考虑三个项目的占用内存空间的情况,

初步尝试jvm大小设置2048,年轻区启用并行收集器,年老区启用CMS

-server 
-Xmx 2048m 
-Xms 2048m 
-XX:+UseParaNewGC 
-XX:+UseConcMarkSweepGC 
-XX:CMSFullGCBefore=10
-XX:MetaspaceSize=256m 
-XX:MaxMetaspaceSize=256m
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-Xloggc:gc.log

开启后,观察一天,三个项目的GC回收次数很明显大幅度下降了!!!!!!!!!!!

--------------------------------------------------------------------------------------

第一个项目

3天,年轻区回收次数99次,年老区回收3次

配置后

3天,年轻区回收次数20次,年老区回收1次

--------------------------------------------------------------------------------------

第二个项目

4天,年轻区回收次数559次,年老区回收31次

配置后

4天,年轻区回收次数90次,年老区回收10次

--------------------------------------------------------------------------------------

第三个项目

6天年轻区回收161次,年老区回收3次

配置后

6天年轻区回收50次,年老区0次

--------------------------------------------------------------------------------------

总结:很后悔之前没有好好学习jvm的相关内容,现在配置完,效果拔群

以上配置虽然提升JVM的性能,但相对的导致内存比较紧张,3个项目,每个项目堆内存设置为2G,8G的机子剩余2G,这也是很头痛的地方。

我会继续逐步根据GC日志来进行JVM配置的。

他人的案例

1、一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程

该作者由原先的FullGC 40次/天改为10天才一次,总共经历了两次调优

上一篇

技术自查第一篇:JVM调优入门篇

下一篇

技术自查第三篇:JVM/GC日志查看篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值