2024-10-26  阅读(12)
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/4596312666

回答

要排查 Full GC 频繁执行的原因,我们首先需要了解哪些情况会触发 Full GC,主要情况有如下几种:

  • 老年代不足
  • 元空间不足
  • 显示调用 System.gc()
  • 大对象直接进入老年代
  • 空间分配担保机制失败
  • CMS 时出现 promotion failedconcurrent mode failure

详情情况请阅读:什么情况下会触发 Full GC?

一般排查步骤大致如下:

首先我们需要下掉一台服务器的流量,保护好现场,然后把其他服务器重启,恢复服务。然后就是找运维要 dump 文件和 GC 日志文件分析了。

  • 一、检查 JVM GC日志

通过分析 GC 日志,我们可以看到触发 Full GC 的条件,如下:

12.345: [Full GC (Allocation Failure) [PSYoungGen: 1280K->0K(1536K)] [ParOldGen: 8192K->6144K(8192K)] 9472K->6144K(9728K), [Metaspace: 512K->512K(1024K)], 0.1234 secs]