GC简介和监控调优_java gc监控

不同区域用到的算法

在这里插入图片描述

在这里插入图片描述

什么是GC监控?

GC监控 指的是在运行时跟踪JVM运行GC的过程。例如,通过GC监控,我们能找出:

  • 何时新生代的对象会被移动到老年代,有多少对象被移到了老年代。
  • 何时stop-the-world发生以及持续时间。
  • 通过GC监控,能发现JVM是否在有效的运行GC以及是否需要额外的GC调优。基于这些信息,我们可以通过优化应用或者改变GC运行方式(GC调优),从而提高应用性能

如何做GC监控?

jstat: Java Virtual Machine Statistics Monitoring Tool

在使用-gcutil选项时,会输出如下字段的信息。在做GC调优时,尤其要关注YGC, YGCT, FGC, FGCT和GCT的数据变化。

[root@hadoop1012 ~]# jstat -gcutil 1845 3000 100
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00 100.00  35.86   6.50  95.92  87.40      1    0.023     0    0.000    0.023
  0.00 100.00  35.86   6.50  95.92  87.40      1    0.023     0    0.000    0.023
  0.00 100.00  35.86   6.50  95.92  87.40      1    0.023     0    0.000    0.023
  0.00 100.00  35.86   6.50  95.92  87.40      1    0.023     0    0.000    0.023
  0.00 100.00  35.86   6.50  95.92  87.40      1    0.023     0    0.000    0.023
  0.00 100.00  35.86   6.50  95.92  87.40      1    0.023     0    0.000    0.023
  0.00 100.00  35.86   6.50  95.92  87.40      1    0.023     0    0.000    0.023
  0.00 100.00  35.86   6.50  95.92  87.40      1    0.023     0    0.000    0.023
  0.00 100.00  35.86   6.50  95.92  87.40      1    0.023     0    0.000    0.023
  0.00 100.00  35.86   6.50  95.92  87.40      1    0.023     0    0.000    0.023


YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

新生代的GC大概需要平均时间 YGCT/YGC
老生代的GC大概需要平均时间 FGCT/FGC

在监控的里FullGC发生0次(FGC),FullGC所用时间为0ms(FGCT),YGC 1次,所用时间:YGCT为0.023s

当Full GC < 半小时/次且Fulll GC time < 1s,可认为GC工作良好。
•Minor GC执行迅速(50毫秒以内)
•Minor GC执行不频繁(间隔10秒左右一次)
•Full GC执行迅速(1秒以内)
•Full GC执行不频繁(间隔10分钟左右一次)

如不满足,则说明GC有优化的空间,但不是必须,需结合实际业务处理速度来看。
如GC进行优化,则需进行长时间的稳定性测试,同时监控GC的指标来判断GC优化的有效性。

两种监控方式:

在这里插入图片描述

在使用-verbosegc时还可同时指定以下附加选项:

  • -XX:+PrintGCDetails 可以详细了解GC中的变化
  • -XX:+PrintGCTimeStamps 可以了解这些垃圾收集发生的时间,自JVM启动以后以秒计量。
  • -XX:+PrintHeapAtGC 了解堆的更详细的信息
  • -XX:+PrintGCDateStamps(JDK6U4引入的选项) GC发生的时间信息
  • -Xloggc:$CATALINA_BASE/logs/gc.log GC日志产生的路径
  • -XX:+PrintGCApplicationStoppedTime 输出GC造成应用暂停的时间

如果只指定-verbosegc选项,则默认会同时指定-XX:+PrintGCDetails。
另外,-verbosegc的附加选项都可以组合使用。

日志输出格式说明

  • 当有minor GC发生时
[GC [<collector>: 
<starting occupancy1> -> <ending occupancy1>, <pause time1> secs] 
<starting occupancy3> -> <ending occupancy3>, <pause time3> secs]

在这里插入图片描述

  • Full GC输出的例子

写在最后

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!

由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里

蚂蚁、京东Java岗4面:原理+索引+底层+分布式+优化等,已拿offer

蚂蚁、京东Java岗4面:原理+索引+底层+分布式+优化等,已拿offer

蚂蚁、京东Java岗4面:原理+索引+底层+分布式+优化等,已拿offer

图片转存中…(img-rA2TrE9D-1714292247022)]

[外链图片转存中…(img-XXLECOsI-1714292247022)]

[外链图片转存中…(img-68hvdx0Q-1714292247023)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值