最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java線上頻繁FullGC的完整排查流程

 更新時間:2026年06月05日 09:33:01   作者:碼不停蹄的玄黓  
這段文章詳細介紹了FullGC的的常見觸發(fā)原因原因、排查思路和優(yōu)化方法,涵蓋老年代不足、內(nèi)存泄漏、MetaSpace元空間滿等方面,并提供了從緊急應(yīng)急到長期優(yōu)化的全面解決方案,需要的朋友可以參考下

一、先明確:FullGC觸發(fā)常見原因

  1. 老年代空間不足、內(nèi)存泄漏/內(nèi)存溢出
  2. 大對象直接進老年代、頻繁晉升
  3. MetaSpace元空間滿、動態(tài)加載類過多
  4. System.gc()代碼主動調(diào)用、RMI定時FullGC
  5. JVM參數(shù)不合理:新生代太小、Survivor過小、晉升閾值異常
  6. 堆內(nèi)存分配過小、物理內(nèi)存被其他進程搶占

核心排查思路:先抓現(xiàn)場 → 看GC日志定位類型 → 堆快照分析 → 代碼定位 → 壓測復現(xiàn) → 調(diào)參優(yōu)化

二、階段1:緊急應(yīng)急(線上不能停服優(yōu)先)

1. 基礎(chǔ)信息采集

# 查看java進程PID
jps -l
# 實時看GC狀態(tài)
jstat -gcutil PID 1000

重點指標:

  • O(老年代使用率)持續(xù)上漲 → 內(nèi)存泄漏/對象不停晉升到老年代
  • M(元空間)持續(xù)漲滿 → 類加載泄漏
  • S0/S1長期幾乎滿、Eden快速打滿 → 新生代過小,對象頻繁提前晉升老年代

2. 臨時規(guī)避(業(yè)務(wù)優(yōu)先保可用)

  1. 臨時擴容-Xmx/-Xms,增大堆,緩解頻繁FGC
  2. 臨時關(guān)閉RMI自動FullGC:-Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
  3. 臨時下線可疑定時任務(wù)、批量導入、大文件解析接口

三、階段2:采集GC日志,定位FGC根因分類

1. 開啟/導出GC日志(沒提前配置則動態(tài)抓?。?/h3>

JVM啟動參數(shù)必備(生產(chǎn)標配):

-Xloggc:/xxx/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC

根據(jù)GC日志區(qū)分4大類FGC:

  1. 老年代占滿觸發(fā)FGC(最常見)
    日志關(guān)鍵字:Allocation Failure,Eden耗盡→對象晉升老年代,老年代不足觸發(fā)FullGC
  2. MetaSpace滿觸發(fā)FGC
    日志:Metaspace allocation failure,動態(tài)代理、熱加載、頻繁創(chuàng)建ClassLoader
  3. System.gc()主動觸發(fā)
    日志:Full GC (System.gc()),代碼/第三方包顯式調(diào)用System.gc()
  4. CMS并發(fā)失敗/晉升擔保失?。–MS收集器)
    concurrent mode failure / promotion failed:老年代預(yù)留空間不足,擔保失敗觸發(fā)STW FullGC

四、階段3:dump堆快照,定位占用內(nèi)存的對象(核心步驟)

抓堆時機:FGC頻繁、老年代占用率80%+還沒OOM時dump,避免OOM后數(shù)據(jù)丟失

方式1:命令行dump

jmap -dump:format=b,file=heap.hprof PID
# 生產(chǎn)dump建議加參數(shù),不阻塞業(yè)務(wù):
jmap -dump:live,format=b,file=heap.hprof PID

方式2:OOM自動dump(提前配置)

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/xxx/heap.hprof

堆文件分析工具

  1. MAT(Eclipse Memory Analyzer,首選)
    • Leak Suspects:泄漏可疑報告(一鍵定位泄漏對象)
    • Dominator Tree:支配樹,查看占用堆最多的對象
    • Histogram:按類統(tǒng)計實例數(shù)量、占用內(nèi)存
  2. JProfiler、Arthas在線分析(不用下載大hprof)

五、階段4:Arthas在線實時排查(不用重啟、不用dump大文件)

1. 安裝啟動Arthas

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

常用排查命令

# 1. 實時監(jiān)控GC
gc -i 1000
# 2. 查看堆內(nèi)存實時分布
heapdump --live /tmp/dump.hprof
# 3. 查看對象實例數(shù)量,快速找暴漲對象
dashboard
# 4. 追蹤創(chuàng)建大量對象的方法
trace 全類名 方法名
# 5. 排查ClassLoader泄漏
classloader

六、階段5:按場景逐個定位代碼問題

場景1:內(nèi)存泄漏(老年代緩慢漲,每次FGC回收不掉多少內(nèi)存)

常見泄漏點:

  1. 靜態(tài)集合(static List/Map)無限add對象,無移除邏輯
  2. ThreadLocal使用完未remove,線程池復用線程導致對象常駐
  3. 連接池、緩存(本地Cache)無過期淘汰,數(shù)據(jù)只增不減
  4. 第三方框架:Mybatis攔截器、定時任務(wù)、異步線程未銷毀對象

MAT定位:支配樹找到超大對象 → 查看引用鏈Reference Chain → 找到業(yè)務(wù)代碼

場景2:大對象頻繁創(chuàng)建直接進老年代

  • 一次性讀取超大文件、全表查數(shù)據(jù)庫不分頁返回全量List
  • 超大字符串拼接、一次性創(chuàng)建超大數(shù)組
    JVM參數(shù):-XX:PretenureSizeThreshold=2M 超過閾值直接進老年代,頻繁創(chuàng)建觸發(fā)FGC

場景3:元空間滿FGC

  • 動態(tài)生成代理類(CGLIB頻繁創(chuàng)建)、Groovy腳本熱加載
  • 自定義ClassLoader不停新建不卸載,-XX:MaxMetaspaceSize配置過小

場景4:代碼主動System.gc()

  1. 第三方SDK、老版本RPC、定時任務(wù)里隱式調(diào)用System.gc()
  2. 代碼檢索System.gc()全局關(guān)鍵字,使用Arthas watch攔截調(diào)用

七、階段6:JVM參數(shù)優(yōu)化(分收集器:G1/CMS/ZGC)

通用優(yōu)化方向

  1. 新生代大?。篍den占堆1/3~1/2,避免Eden過小頻繁晉升
  2. 調(diào)整SurvivorRatio、MaxTenuringThreshold晉升年齡,減少過早晉升到老年代
  3. 禁用顯式GC:-XX:+DisableExplicitGC(謹慎:NIO依賴System.gc堆外內(nèi)存則不能加)
  4. 合理設(shè)置MetaSpace:-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M

G1收集器(主流生產(chǎn))

-XX:+UseG1GC
-XX:MaxGCPauseMillis=200 # 預(yù)期STW停頓
-XX:G1HeapRegionSize=16M

CMS老項目優(yōu)化

  • 調(diào)高老年代預(yù)留空間:-XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly,避免并發(fā)失敗FullGC

八、階段7:復現(xiàn)驗證+上線落地優(yōu)化

  1. 本地/測試環(huán)境壓測(JMeter)復現(xiàn)FGC,修復代碼后壓測驗證GC平穩(wěn)
  2. 上線灰度發(fā)布,上線后持續(xù)監(jiān)控GC指標(Prometheus+Grafana)
  3. 告警配置:老年代使用率>80%、10min內(nèi)FullGC>3次觸發(fā)告警

九、排查速記口訣

先jstat看GC趨勢 → 拉GC日志分FGC類型 → arthas在線查對象 → dump堆MAT找泄漏引用 → 改代碼+調(diào)JVM參數(shù) → 壓測驗證上線

到此這篇關(guān)于Java線上頻繁FullGC的完整排查流程的文章就介紹到這了,更多相關(guān)Java線上頻繁FullGC內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 分頁技術(shù)原理與實現(xiàn)之Java+Oracle代碼實現(xiàn)分頁(二)

    分頁技術(shù)原理與實現(xiàn)之Java+Oracle代碼實現(xiàn)分頁(二)

    這篇文章主要介紹了分頁技術(shù)原理與實現(xiàn)的第二篇:Java+Oracle代碼實現(xiàn)分頁,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 通過圖例了解IDEA引入JQuery實現(xiàn)步驟

    通過圖例了解IDEA引入JQuery實現(xiàn)步驟

    這篇文章主要介紹了IDEA引入JQuery實現(xiàn)步驟圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Java泛型機制與反射原理相關(guān)知識總結(jié)

    Java泛型機制與反射原理相關(guān)知識總結(jié)

    今天帶大家學習的是關(guān)于Java進階的相關(guān)知識,文章圍繞著Java泛型機制與反射原理展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 教你用IDEA配置JUnit并進行單元測試

    教你用IDEA配置JUnit并進行單元測試

    今天教各位小伙伴怎么用IDEA配置JUnit并進行單元測試,文中有非常詳細的圖文介紹及代碼示例,對正在學習IDEA的小伙伴有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • java實現(xiàn)快速打字游戲

    java實現(xiàn)快速打字游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)快速打字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Java簡單高效實現(xiàn)分頁功能

    Java簡單高效實現(xiàn)分頁功能

    這篇文章主要介紹了Java簡單高效實現(xiàn)分頁功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot項目Jar包使用systemctl運行過程

    SpringBoot項目Jar包使用systemctl運行過程

    這篇文章主要介紹了SpringBoot項目Jar包使用systemctl運行過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 基于Java編寫第一個區(qū)塊鏈項目

    基于Java編寫第一個區(qū)塊鏈項目

    區(qū)塊鏈是分布式數(shù)據(jù)存儲、點對點傳輸、共識機制、加密算法等計算機技術(shù)的新型應(yīng)用模式,下面這篇文章主要給大家介紹了基于Java實現(xiàn)區(qū)塊鏈的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Spring WebFlux實現(xiàn)參數(shù)校驗的示例代碼

    Spring WebFlux實現(xiàn)參數(shù)校驗的示例代碼

    請求參數(shù)校驗,在實際的應(yīng)用中很常見,網(wǎng)上的文章大部分提供的使用注解的方式做參數(shù)校驗。本文主要介紹 Spring Webflux Function Endpoint 使用 Spring Validation 來校驗請求的參數(shù)。感興趣的可以了解一下
    2021-08-08
  • eclipse自動創(chuàng)建SpringBoot項目報錯的解決

    eclipse自動創(chuàng)建SpringBoot項目報錯的解決

    這篇文章主要介紹了eclipse自動創(chuàng)建SpringBoot項目報錯的解決方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論

舒兰市| 巴林左旗| 教育| 湖北省| 永顺县| 潞西市| 科技| 义马市| 洱源县| 陆河县| 勐海县| 启东市| 镶黄旗| 马公市| 饶河县| 拜泉县| 桦川县| 汉中市| 永靖县| 龙南县| 东乡县| 依安县| 惠水县| 讷河市| 麟游县| 永胜县| 龙州县| 建水县| 保康县| 泰宁县| 资中县| 衡水市| 鄢陵县| 土默特右旗| 石渠县| 昌黎县| 麻栗坡县| 青浦区| 海丰县| 勐海县| 大同市|