JVM<四> 初次JVM调优

JVM<一> 初识JVM CLASS文件结构_丛林雪狼code的博客-CSDN博客

JVM<二> 运行时区域 Run-Time Data Areas_丛林雪狼code的博客-CSDN博客

JVM<三> Gc Garbage Collection垃圾处理器_丛林雪狼code的博客-CSDN博客

JVM 调优,调的是什么?---> 减少 Full Gc 的次数;

什么时候触发 Full Gc ? ---> 老年代区存储满达到极值或metaSpace 区满载 拓展时;

Full Gc 进行时会产生什么?---> Stop world ; 暂停服务、服务卡顿;

Jvm 调优战略思想:

     服务启动时,开启监控 Jvm 运行情况;当发生 Full Gc 后,记录内存使用的详细情况,排查业务逻辑代码;进行调优;

场景:浅学JVM后,想对开发环境中的项目进行一次初步调优;

因此,开始查看如何能看到 Full Gc 的方法;.......<中间去找度娘啦.......> 那么,JVM中自带参数可以查看,初识参数:

JDK1.8 的 默认GC模式主要是:Paraller Scavenge + ParallerOld -> PS+PO模式
JVM的GC日志的主要参数:
-XX:+PrintGC    输出GC日志
-XX:+PrintGCDetails   输出GC的详细日志
-XX:+PrintGCTimeStamps   输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps    输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-Xloggc:gc.log  日志文件的输出路径,每次项目启动都会覆盖掉该文件内容
-XX:MetaspaceSize=128m (元空间默认大小)
-XX:MaxMetaspaceSize=128m (元空间最大大小)
-Xms1024m (堆最大大小)
-Xmx1024m (堆默认大小)
-Xmn256m (新生代大小)

-Xss256k (棧最大深度大小)

初使命令:输出gc日志  gc.log (默认存储于项目更路径下,每次重启项目都会被格式化)

 gc.log 部分内容展示:项目启动即4次 Full Gc

Full Gc 日志摘录解析:

2021-12-30T14:06:57.979+0800: 11.205: [Full GC (Metadata GC Threshold) [PSYoungGen: 10834K->0K(49664K)] [ParOldGen: 33332K->38943K(136704K)] 44166K->38943K(186368K), [Metaspace: 56532K->56532K(1101824K)], 0.2769795 secs] [Times: user=0.87 sys=0.01, real=0.28 secs]  Full GC (Metadata GC Threshold):说明了本次垃圾收集的停顿类型,不是用来区分新生代GC还是老年代GC,如果有Full,说明本次GC发生了Stop-The-World。

[PSYoungGen: 10834K->0K(49664K)]:GC发生的区域-> PS ->Paraller Scavenge 也就是堆内存的年轻代;10834K->0K(49664K) 指的是 GC 之前使用内存 10834k(10M)->GC 后占用内存0k(0M),总内存 49664K(50M)

[ParOldGen: 33332K->38943K(136704K)] :GC发生的区域-> ParOldGen->Paraller Old 也就是堆内存的老年代区域;33332K->38943K(136704K) 指的是 GC 之前使用内存 33332K(34M)->GC 后占用内存38943K(39M),总内存 136704K(150M)

 44166K->38943K(186368K) : GC之前堆内存占用45M,GC之后堆内存占39M,堆内存总占186M

 [Metaspace: 56532K->56532K(1101824K)]:GC发生的区域-> Metaspace->元数据空间;56532K->56532K(1101824K) 指的是 GC 之前使用内存 56532k(57M)->GC 后占用内存56532K(57M),总内存 1101824K(150M)

 经GC日志分析,找出Full GC的原因为 metaSpace 扩容导致Full Gc;JDK1.8默认metaSpace的大小为 21M,而实际中大约为 57M -> 60M;故此时JVM 调优措施是将 metaSpace空间的大小设置大一点:-XX:MetaspaceSize=100m 

经过调优后 重启项目 再次查看gc日志 ,便没了 Full Gc ;

尝到了一丁点的小甜头;

加油 !继续努力.......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值