gc就是fullgc吗 major_线上出现fullgc问题如何排查?
生活随笔
收集整理的這篇文章主要介紹了
gc就是fullgc吗 major_线上出现fullgc问题如何排查?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.問題描述
線上出現(xiàn)fullgc報警,每5分鐘一次2.背景知識
1. 程序執(zhí)行了System.gc()
執(zhí)行Minor GC的時候,JVM會檢查老年代中最大連續(xù)可用空間是否大于了當前新生代所有對象的總大小。 如果大于,則直接執(zhí)行Minor GC(這個時候執(zhí)行是沒有風險的)。 如果小于了,JVM會檢查是否開啟了空間分配擔保機制,如果沒有開啟則直接改為執(zhí)行Full GC。 如果開啟了,則JVM會檢查老年代中最大連續(xù)可用空間是否大于了歷次晉升到老年代中的平均大小,如果小于則執(zhí)行改為執(zhí)行Full GC。 如果大于則會執(zhí)行Minor GC,如果Minor GC執(zhí)行失敗則會執(zhí)行Full GC
3.排查步驟
注意: JVM在執(zhí)行dump操作的時候是會發(fā)生stop the word事件的,也就是說此時所有的用戶線程都會暫停運行。3.1通過JVM參數(shù)獲取dump文件
# 1.線上環(huán)境如果有流量需要在啟動服務腳本中加入如下JVM參數(shù),表示在發(fā)生fullgc的時候自動dump -XX:HeapDumpBeforeFullGC # 2.與第一個JVM參數(shù)配套使用,指定dump文件的保存路徑,便于排查問題,路徑也可以是相對路徑 -XX:HeapDumpPath=保存dump文件的文件絕對路徑# 說明:如果加入這兩個jvm參數(shù)還是沒有dump下來文件,可能是你的jvm的參數(shù)中有其他的參數(shù)導致dump失敗,排查看是否有如下參數(shù),如果有去掉即可 -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發(fā)生時刻的dump文件和正常沒有發(fā)生fullgc時間的dump文件都下載到本地,然后對比觀察分析方便找到問題的原因總結
以上是生活随笔為你收集整理的gc就是fullgc吗 major_线上出现fullgc问题如何排查?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: prictice
- 下一篇: 1025. 反转链表 (25)