JVM调优之处理频繁Full GC问题

首先需要知道可能触发Full GC的机制,才可对症下药

  1. 老年代空间不足。

  2. 永生代或者元数据空间不足。

  3. System.gc()方法调用。

  4. CMS GC时出现promotion failed和concurrent mode failure

  5. YoungGC时晋升老年代的内存平均值大于老年代剩余空间

  6. 有连续的大对象需要分配

接下来介绍两种方法对Full GC 问题进行排查

①利用GC日志

1.1 如何生成GC日志

这里以WEB项目为例,监测Tomcat服务器的GC情况,可以通过IDE设置Tomcat的JVM参数,具体步骤如下图所示:

JVM调优之处理频繁Full GC问题_第1张图片

打开配置

JVM调优之处理频繁Full GC问题_第2张图片

在VM options处设置JVM参数,我这里是将GC日志输出到D盘的iFit_gc.log文件中,GC参数设置可以参考下图

JVM调优之处理频繁Full GC问题_第3张图片

②利用JVM性能调优神器,即VisualVM

VisualVM的简介可以参看以下博客(这篇博客还会以一个案例,教你如何使用VisualVM对内存使用情况进行分析,如何精确定位到哪个实例存在问题):

VisualVM简介

如果VisualVM安装插件报错,可以参看以下博客:

VisualVM安装插件报错的解决方案

利用VisualVM查看GC过程的效果图如下(需要安装VisualGC插件):

JVM调优之处理频繁Full GC问题_第4张图片

项目中的Full GC问题

参考博客:一次频繁Full GC问题排查过程分享

参考博客:Full GC问题解决

你可能感兴趣的:(JVM)