如何使用VisualVM等工具判断Java程序当前执行的GC是young GC还是Full GC
VisualVM查看GC类型的实现方法
VisualVM本身支持识别Young GC和Full GC,只需安装对应插件即可实现,操作步骤如下:
- 打开VisualVM后选中目标Java进程,进入进程详情页
- 检查顶部tab栏是否存在Visual GC选项,无该选项则先安装插件:
- 依次点击顶部菜单栏
工具->插件->可用插件,在列表中找到「Visual GC」插件勾选安装,重启VisualVM后生效
- 依次点击顶部菜单栏
- 进入Visual GC页面后,可直接查看两类GC的明细数据:Eden、Survivor区回收对应Young GC,老年代/元空间回收对应Full GC,页面会分别统计两类GC的执行次数、累计耗时、触发时间线
- 如需查看单次GC事件明细,可在「监视」tab中开启GC日志输出配置,实时查看每一次GC的类型和详细参数
其他适用的GC分析工具
如果不想用VisualVM,也可以选择以下工具满足需求:
jstat:JDK自带命令行工具,无需额外安装,执行jstat -gcutil [目标进程ID] 1000即可每秒输出一次GC统计数据,其中YGC/YGCT列为Young GC的次数和累计耗时,FGC/FGCT列为Full GC的次数和累计耗时- 离线GC分析工具:可导出JVM的GC日志文件后导入对应分析工具,自动生成GC类型分布、耗时占比等可视化报表
- 阿里Arthas:适合线上实时诊断场景,执行
gc命令即可快速输出当前JVM的GC类型、次数、耗时等核心指标
内容的提问来源于stack exchange,提问作者Raki
相关产品推荐
相关产品推荐

