gc就是fullgc吗 major_线上出现fullgc问题如何排查?
生活随笔
收集整理的這篇文章主要介紹了
gc就是fullgc吗 major_线上出现fullgc问题如何排查?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.問題描述
線上出現fullgc報警,每5分鐘一次2.背景知識
1. 程序執行了System.gc()
執行Minor GC的時候,JVM會檢查老年代中最大連續可用空間是否大于了當前新生代所有對象的總大小。 如果大于,則直接執行Minor GC(這個時候執行是沒有風險的)。 如果小于了,JVM會檢查是否開啟了空間分配擔保機制,如果沒有開啟則直接改為執行Full GC。 如果開啟了,則JVM會檢查老年代中最大連續可用空間是否大于了歷次晉升到老年代中的平均大小,如果小于則執行改為執行Full GC。 如果大于則會執行Minor GC,如果Minor GC執行失敗則會執行Full GC
3.排查步驟
注意: JVM在執行dump操作的時候是會發生stop the word事件的,也就是說此時所有的用戶線程都會暫停運行。3.1通過JVM參數獲取dump文件
# 1.線上環境如果有流量需要在啟動服務腳本中加入如下JVM參數,表示在發生fullgc的時候自動dump -XX:HeapDumpBeforeFullGC # 2.與第一個JVM參數配套使用,指定dump文件的保存路徑,便于排查問題,路徑也可以是相對路徑 -XX:HeapDumpPath=保存dump文件的文件絕對路徑# 說明:如果加入這兩個jvm參數還是沒有dump下來文件,可能是你的jvm的參數中有其他的參數導致dump失敗,排查看是否有如下參數,如果有去掉即可 -XX:+DisableExplicitGC3.2通過JDK自帶的工具jmap獲取dump文件
# 導出內存dump文件 jmap -F -dump:live,file=jmap.hprof [PID] ##### 3.3把dump文件從線上主機下載到本地 命令格式: scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file##### 3.4通過JDK自帶的jvisualvm工具分析或者下載三方軟件jprofiler來分析dump文件即可##### 3.5最重要的一點,要把fullgc發生時刻的dump文件和正常沒有發生fullgc時間的dump文件都下載到本地,然后對比觀察分析方便找到問題的原因總結
以上是生活随笔為你收集整理的gc就是fullgc吗 major_线上出现fullgc问题如何排查?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: prictice
- 下一篇: C# 根据模板 导出 Excel 图