频繁full gc问题排查步骤,求教~

新手上路,请多包涵

比如,某个下午机器隔一段时间就full gc七八次,该如何入手去查询问题,感觉看jstack的日志,也看不出来啥,萌新求助~

阅读 4.8k
2 个回答

1、保存线程栈:jstack -l pid > jstack.log
2、保存heap:jmap -dump:format=b,file=heap.hprof pid
3、使用mat分析heap,看是否有内存泄露
4、分析gc log(如果之前没有开启gc log,要开启,然后复现,再拿gc log来查看),看是否是gc参数配置的不恰当

附开启gclog的参数

  • java8及之前的版本
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-XX:+PrintGCTimeStamps
-XX:+PrintTenuringDistribution 
-Xloggc:/some-path/gc-$(date +%Y%m%d-%H%M%S).log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=5
-XX:GCLogFileSize=10M
  • java9及以上版本
-Xlog:gc*=info:file=/some-path/gc-%t-%p.log:timemillis,pid:filecount=5,filesize=10M
新手上路,请多包涵

jdk8 加了这个参数,但是没有gc日志

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进