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

如何查看java進程gc情況

 更新時間:2025年07月02日 09:17:05   作者:alden_ygq  
這篇文章主要介紹了如何查看java進程gc情況,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

在 Java 應(yīng)用性能調(diào)優(yōu)中,監(jiān)控垃圾回收(GC)情況是關(guān)鍵環(huán)節(jié)。

以下是查看 Java 進程 GC 狀態(tài)的常用方法、工具及最佳實踐:

一、命令行工具實時監(jiān)控

1. jstat(JDK 自帶)

功能:實時顯示 JVM 內(nèi)存和 GC 統(tǒng)計信息。

語法

jstat -gc <pid> [間隔時間(ms)] [次數(shù)]

常用參數(shù)

  • -gc:顯示 GC 相關(guān)統(tǒng)計。
  • -gcutil:顯示 GC 利用率(百分比)。

示例

jstat -gc 12345 1000  # 每 1000ms 輸出一次 GC 統(tǒng)計

輸出字段含義

S0C:Survivor0 區(qū)容量(KB)
S1C:Survivor1 區(qū)容量
S0U:Survivor0 區(qū)已使用
EC:Eden 區(qū)容量
EU:Eden 區(qū)已使用
OC:老年代容量
OU:老年代已使用
MC:元空間容量
MU:元空間已使用
YGC:年輕代 GC 次數(shù)
YGCT:年輕代 GC 總耗時(秒)
FGC:Full GC 次數(shù)
FGCT:Full GC 總耗時
GCT:GC 總耗時

2. jstat 進階用法

監(jiān)控 GC 頻率和內(nèi)存增長趨勢

# 每 5 秒輸出一次 GC 利用率,持續(xù)監(jiān)控
jstat -gcutil 12345 5000

輸出示例

 S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
0.00  99.81  93.21  42.35  92.83  89.75    126    0.536     1    0.024    0.560

關(guān)鍵指標(biāo)

  • E(Eden 區(qū)使用率)接近 100% 時觸發(fā) YGC。
  • O(老年代使用率)持續(xù)增長可能導(dǎo)致 FGC。
  • YGC 和 FGC 頻率過高(如每分鐘多次)需警惕性能問題。

二、GC 日志分析

1. 啟用 GC 日志

在 JVM 啟動參數(shù)中添加:

java -XX:+PrintGCDetails \
     -XX:+PrintGCDateStamps \
     -XX:+PrintHeapAtGC \
     -Xloggc:/path/to/gc.log \
     -jar your-app.jar

參數(shù)說明

  • PrintGCDetails:打印 GC 詳細信息。
  • PrintGCDateStamps:添加 GC 發(fā)生的時間戳。
  • Xloggc:指定日志文件路徑。

2. 手動觸發(fā) GC 并查看日志

jcmd <pid> GC.run  # 手動觸發(fā) Full GC
tail -f /path/to/gc.log  # 實時查看日志

3. 日志分析工具

GCEasy

上傳 GC 日志到 GCEasy,自動生成分析報告,包含:

  • GC 頻率和耗時分布。
  • 堆內(nèi)存使用趨勢。
  • 推薦的 JVM 參數(shù)優(yōu)化建議。

GCViewer

本地工具,可視化 GC 日志:

java -jar gcviewer-1.36.jar /path/to/gc.log

三、可視化工具監(jiān)控 GC

1. VisualVM(JDK 自帶)

啟動方式

jvisualvm  # JDK 8 及以前版本自帶

監(jiān)控步驟

  • 選擇目標(biāo) Java 進程 → 點擊「Monitor」選項卡。
  • 查看「Heap」和「Perm Gen」變化趨勢。
  • 點擊「Perform GC」手動觸發(fā) GC。

2. Java Mission Control (JMC) + JFR

啟動 JFR 記錄

jcmd <pid> JFR.start name=GCRecording settings=profile duration=5m filename=gc.jfr

分析 GC 事件

  • 使用 JMC 打開 .jfr 文件。
  • 查看「Garbage Collections」視圖,分析 GC 類型、耗時和內(nèi)存變化。

四、生產(chǎn)環(huán)境低開銷監(jiān)控方案

1. Prometheus + Grafana

配置 JMX Exporter

java -javaagent:/path/to/jmx_prometheus_javaagent.jar=9090:/path/to/config.yaml -jar your-app.jar

Grafana 儀表盤

導(dǎo)入預(yù)定義的 JVM 監(jiān)控儀表盤(如 ID 14548),查看:

  • 堆內(nèi)存各區(qū)域使用情況。
  • GC 頻率和耗時趨勢。
  • 類加載 / 卸載數(shù)量。

2. Arthas(在線診斷工具)

查看 GC 統(tǒng)計

dashboard  # 實時查看 JVM 狀態(tài),包括 GC 信息

監(jiān)控特定類的 GC 情況

monitor -c 5 java.lang.String  # 每 5 秒統(tǒng)計 String 對象的 GC 情況

五、GC 問題排查思路

1. 高頻 Full GC 排查

檢查老年代增長趨勢

jstat -gcoldcapacity <pid> 1000  # 監(jiān)控老年代容量變化

分析大對象分配

使用 JFR 記錄「Object Allocation in New TLAB」事件,找出頻繁創(chuàng)建大對象的代碼。

2. 長時間 STW(Stop The World)

檢查 GC 類型

通過 GC 日志確認是否為 CMS 或 G1 的 Full GC 導(dǎo)致。

優(yōu)化建議

  • 增大堆內(nèi)存(-Xmx)。
  • 調(diào)整垃圾收集器(如使用 G1 或 ZGC)。

3. 內(nèi)存泄漏預(yù)警

對比多次堆轉(zhuǎn)儲

# 間隔 1 小時生成兩次堆轉(zhuǎn)儲
jmap -dump:format=b,file=heap1.hprof <pid>
sleep 3600
jmap -dump:format=b,file=heap2.hprof <pid>

使用 MAT 對比兩個堆轉(zhuǎn)儲,找出持續(xù)增長的對象類型。

六、GC 性能指標(biāo)參考

指標(biāo)健康值參考問題表現(xiàn)
YGC 頻率幾分鐘到幾十分鐘一次每秒多次
YGC 耗時通常 < 100ms超過 500ms
FGC 頻率幾小時到幾天一次每小時多次
FGC 耗時通常 < 500ms超過 1s
老年代使用率穩(wěn)定在 30%-70%持續(xù)增長接近 100%
GC 總耗時占比< 5%超過 10%

七、JVM 參數(shù)優(yōu)化建議

根據(jù)應(yīng)用特點調(diào)整 GC 相關(guān)參數(shù):

堆內(nèi)存分配

-Xms2g -Xmx2g  # 堆內(nèi)存初始值和最大值一致,避免動態(tài)調(diào)整

新生代比例

-XX:NewRatio=2  # 老年代:新生代 = 2:1

垃圾收集器選擇

# G1 適合大內(nèi)存(> 8GB)應(yīng)用
-XX:+UseG1GC -XX:MaxGCPauseMillis=200

# ZGC 適合極低延遲要求(< 10ms STW)
-XX:+UseZGC

通過以上方法,可全面監(jiān)控 Java 進程的 GC 狀態(tài),及時發(fā)現(xiàn)并解決內(nèi)存泄漏、GC 頻繁等性能問題。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring項目報錯解讀與全部報錯圖文詳解

    Spring項目報錯解讀與全部報錯圖文詳解

    這篇文章主要介紹了Spring項目報錯解讀與全部報錯的相關(guān)資料,在Spring框架開發(fā)中,org.springframework和org.springframework.security相關(guān)報錯通常源于依賴沖突、配置錯誤或類路徑缺失,需要的朋友可以參考下
    2026-02-02
  • Java底層基于二叉搜索樹實現(xiàn)集合和映射/集合Set功能詳解

    Java底層基于二叉搜索樹實現(xiàn)集合和映射/集合Set功能詳解

    這篇文章主要介紹了Java底層基于二叉搜索樹實現(xiàn)集合和映射/集合Set功能,結(jié)合實例形式分析了Java使用二叉搜索樹實現(xiàn)集合和映射相關(guān)操作技巧,需要的朋友可以參考下
    2020-03-03
  • mybatis源碼解讀之executor包語句處理功能

    mybatis源碼解讀之executor包語句處理功能

    這篇文章主要介紹了executor包語句處理功能,mybatis中支持三種語句類型,不同語句類型支持的變量符號不同,下文詳細內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • Java+Redis撤銷重做功能實現(xiàn)

    Java+Redis撤銷重做功能實現(xiàn)

    這篇文章主要介紹了Java+Redis實現(xiàn)撤銷重做功能,需要考慮撤銷的最大步數(shù),撤銷之后穿插著其他操作則不能再重做,所以引入分布式鎖Redisson進行加鎖處理,防止對圖表的操作有并發(fā)請求導(dǎo)致處理撤銷邏輯混亂,感興趣的朋友跟隨小編一起看看吧
    2023-05-05
  • Java動態(tài)數(shù)組添加數(shù)據(jù)的方法與應(yīng)用示例

    Java動態(tài)數(shù)組添加數(shù)據(jù)的方法與應(yīng)用示例

    這篇文章主要介紹了Java動態(tài)數(shù)組添加數(shù)據(jù)的方法,結(jié)合實例形式詳細分析了Java動態(tài)數(shù)組的創(chuàng)建、添加、查找、打印等相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • Maven scala和java混合打包方式

    Maven scala和java混合打包方式

    這篇文章主要介紹了Maven scala和java混合打包方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 解決工具接口調(diào)用報錯:error:Unsupported Media Type問題

    解決工具接口調(diào)用報錯:error:Unsupported Media Type問題

    當(dāng)遇到"UnsupportedMediaType"錯誤時,意味著HTTP請求的Content-Type與服務(wù)器期望的不匹配,比如服務(wù)器期待接收JSON格式數(shù)據(jù),而發(fā)送了純文本格式,常見的Content-Type類型包括text/html、application/json、multipart/form-data等
    2024-10-10
  • Java AbstractMethodError案例分析詳解

    Java AbstractMethodError案例分析詳解

    這篇文章主要介紹了Java AbstractMethodError案例分析詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Spring Boot 緩存注解@Cacheable、@CachePut、@CacheEvict超詳細實戰(zhàn)

    Spring Boot 緩存注解@Cacheable、@CachePut、@CacheEvict超詳

    本文將帶你從零開始掌握 Spring Boot中常用的緩存注解,并通過多個實際案例演示其強大功能_cacheevict,本文結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-06-06
  • Java多線程并發(fā)開發(fā)之DelayQueue使用示例

    Java多線程并發(fā)開發(fā)之DelayQueue使用示例

    這篇文章主要為大家詳細介紹了Java多線程并發(fā)開發(fā)之DelayQueue使用示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評論

班玛县| 扶沟县| 白城市| 万年县| 武夷山市| 五莲县| 宜阳县| 洪江市| 恩平市| 利津县| 华安县| 海伦市| 武强县| 广南县| 泗水县| 修水县| 洪洞县| 澄城县| 瑞安市| 中卫市| 五常市| 灵武市| 南汇区| 黔江区| 藁城市| 石台县| 莱芜市| 梁山县| 建湖县| 闽清县| 嵊泗县| 深圳市| 卫辉市| 徐汇区| 汽车| 浑源县| 容城县| 张北县| 沐川县| 嘉义县| 芒康县|