🔥
Caster 開發日誌
  • Java
    • JVM Performance Tool
      • Java Debug Wire Protocol (JDWP) 的詳細介紹
      • JConsole 詳細介紹
    • Spring Boot
      • Spring Security
      • Spring Boot Admin
      • Spring Event
      • Spring AOP
      • Spring Boot JUnit 5
      • Apache Dubbo
    • Reflect 應用
    • ELK + F 建構
    • Socket.IO
    • OCR - 光學字元辨識
    • 讀取JAR resource文件
    • LocalTime & MySQL時間精度
    • Gradle multi module
    • MyBatis-Plus
    • Java Date operation
    • Java IP to Long
    • Apache Commons lang3 應用
      • Function 應用
    • Cloud Platform
      • Amazon S3
        • SDK V1
          • Bucket
        • SDK V2
          • Bucket
      • Google Cloud Platform
      • Azure Cloud
        • Storage
      • OVHcloud
        • Config
    • SSL/TLS工具
    • Util 工具
      • Jackson Json工具
      • Charles應用
      • JMeter – Performing Distributed Load Testing with Docker
    • Redis
      • Stream
      • Redisson 分布式鎖機制
      • Create Redis Cluster Using Docker
      • List Operations
    • Java 8
      • method & constructor Reference
      • CompletableFuture
      • FunctionInterface
      • Stream 應用
      • 繁簡轉換 - 簡易調整
    • MySQL
      • 建立測試用 流水號Table
      • SQL 效能調校 - Explain
      • SQL 效能調校 - Partition
      • 排程 - Event
    • Apache ShardingSphere
  • Kubernetes
    • 初入江湖(K8S)
    • 零中斷服務滾動更新
    • Kubernetes DNS
    • Ingress & Ingress Controller 教學
    • Ingress TLS Easy setup
  • 指令集
  • Telegram
  • SourceTree
    • 踩坑紀錄(ㄧ) - Git Flow
    • 踩坑紀錄(二) - 修改檔名
  • 專案統計
    • Robot
    • Recharge
  • GitHub
    • Actions
  • GitLab
    • 介紹 GitLab
    • 使用 Docker 自架 GitLab
    • 簡介 GitLab CI/CD
      • GitLab Runner 詳細介紹與設定方式
Powered by GitBook
On this page
  1. Java
  2. JVM Performance Tool

JConsole 詳細介紹

JConsole 詳細介紹

JConsole(Java Monitoring and Management Console)是一個基於 Java Management Extensions (JMX) 的監控工具,用於監控和管理正在運行的 Java 虛擬機(JVM)應用程序。JConsole 是 Java Development Kit (JDK) 的一部分,提供了圖形化的用戶界面,允許開發者和運維工程師即時查看 JVM 的性能、內存使用、垃圾回收、線程狀態、類加載數據以及 JMX 監控數據。

JConsole 尤其適合用於分析 Java 應用的性能瓶頸、內存泄漏、線程死鎖等問題。

啟動 JConsole

1. 本地監控

如果你想監控本地運行的 JVM,JConsole 可以直接從命令行啟動並自動檢測本地的 JVM 實例。

  • 啟動命令: 在命令行輸入 jconsole:

    jconsole

    這將啟動 JConsole 的 GUI,並列出當前系統上正在運行的 Java 應用程序供選擇。

2. 遠程監控

JConsole 還支持遠程監控,允許你監控部署在遠程服務器上的 JVM。這在調試生產環境中或分佈式系統中的性能問題時非常有用。

  • 遠程監控啟動: 要監控遠程 JVM,你需要在遠程 JVM 中啟用 JMX。可以通過以下 JVM 啟動參數來啟用:

    java -Dcom.sun.management.jmxremote \
         -Dcom.sun.management.jmxremote.port=9010 \
         -Dcom.sun.management.jmxremote.authenticate=false \
         -Dcom.sun.management.jmxremote.ssl=false \
         -jar your-app.jar

    這些參數說明:

    • -Dcom.sun.management.jmxremote:啟用 JMX 遠程監控。

    • -Dcom.sun.management.jmxremote.port=9010:設置 JMX 監控的端口(例如 9010)。

    • -Dcom.sun.management.jmxremote.authenticate=false:禁用 JMX 認證(生產環境應使用安全認證)。

    • -Dcom.sun.management.jmxremote.ssl=false:禁用 JMX SSL 加密(生產環境應啟用)。

    啟動應用後,可以在 JConsole 的「遠程進程」選項卡中輸入該 IP 和端口進行遠程連接。

JConsole 的主要功能

JConsole 提供了多個功能標籤頁來監控 JVM 的不同部分,下面是每個標籤頁的詳細介紹。

1. 概覽(Overview)

概覽頁面提供了 JVM 各種關鍵指標的匯總視圖,包括:

  • CPU 使用率:顯示 JVM 消耗的 CPU 百分比。這有助於檢測 CPU 密集型的性能問題。

  • 內存使用率:展示堆內存和非堆內存的使用情況,允許即時查看應用的內存消耗情況。

    • 堆內存:用於應用程序運行時分配的內存,包括對象分配、垃圾回收等。

    • 非堆內存:包括類信息、JVM 本身所需的內存,如 Metaspace。

  • 類加載數量:顯示 JVM 當前加載的類的數量和累積加載的類數量。這有助於分析類加載的問題,如類加載泄漏。

  • 線程數量:顯示 JVM 中運行的線程數量,幫助分析線程飽和度和死鎖問題。

2. 內存(Memory)

此標籤專注於 JVM 的內存管理,並提供了更詳細的內存使用信息。

  • 堆內存使用情況:展示堆內存各區域(如 Eden 空間、Survivor 空間和 Old Generation)的使用情況。這對於分析垃圾回收行為和內存泄漏非常有用。

  • 非堆內存使用情況:展示 JVM 非堆內存(如 Metaspace)的使用情況。

  • 手動垃圾回收:該標籤頁允許你手動觸發垃圾回收(GC)。這在排查內存問題或觀察垃圾回收行為時非常有用。

  • 內存圖表:實時顯示內存的使用曲線,便於發現內存問題,如內存使用急劇上升或回收不充分。

3. 線程(Threads)

線程標籤提供了有關 JVM 中所有線程的詳細信息,包括線程狀態和線程活動。

  • 線程列表:顯示所有線程的當前狀態(如 RUNNABLE、BLOCKED、WAITING)。這有助於識別線程瓶頸、死鎖或飽和問題。

  • 線程堆棧:點擊每個線程,顯示其當前的堆棧跟蹤信息,這對於了解線程在做什麼以及可能的問題非常有幫助。

  • 線程死鎖檢測:JConsole 會自動檢測線程死鎖,如果有線程死鎖發生,會在此處警告。這對於排查死鎖問題非常有效。

4. 類(Classes)

類標籤提供了 JVM 中有關類加載的詳細信息:

  • 加載的類數量:展示當前已加載的類的數量和總加載過的類的累計數量。

  • 類卸載:展示已卸載的類數量,這對於分析類加載過多或類加載泄漏問題很有用。

  • 類加載和卸載的統計數據:以圖形方式展示類加載和卸載的情況,便於觀察類加載的模式。

5. VM 指標(VM Summary)

這個頁面顯示了 JVM 的詳細數據,包括:

  • JVM 版本信息:包括 JVM 提供者、版本、JVM 啟動參數等。

  • 內存池信息:提供 JVM 中內存池的詳細信息,包括每個區域的大小、已用內存、最大可用內存等。

  • 垃圾回收統計:顯示垃圾回收器運行的次數和所用時間,這有助於分析 GC 開銷。

6. MBeans

MBeans 是 JMX(Java Management Extensions)中的一個概念,JConsole 的 MBeans 標籤允許你查看和操作 JVM 中的 MBean。

  • 監控自定義應用程序的 MBean:JMX 是一個非常靈活的管理框架,應用程序可以通過 MBean 對外暴露自定義的管理和監控指標。你可以通過 JConsole 來查看和管理這些 MBean。

  • 操作 MBean:JConsole 不僅允許你查看 MBean 的屬性,還允許你執行 MBean 定義的操作(如重置指標、觸發某些操作等)。

7. 垃圾回收(GC)統計

JConsole 的垃圾回收信息頁面提供了與 JVM 垃圾回收相關的詳細統計數據。這些信息有助於分析 GC 對應用性能的影響,並排查內存問題。

  • GC 運行次數和時間:展示每個垃圾回收器的運行次數和總共運行的時間。

  • 不同代的 GC 行為:展示年輕代(Young Generation)和老年代(Old Generation)的垃圾回收行為,這對於分析 GC 壓力和內存不足等問題很有用。

使用場景

  • 性能調優:通過觀察 JVM 的記憶體和 CPU 使用情況,及時發現性能瓶頸或資源耗盡問題。

  • 記憶體洩漏診斷:垃圾回收日誌和記憶體使用趨勢能幫助發現和排查記憶體洩漏。

  • 應用健康檢查:透過 MBeans 和 JMX 指標,可以定制應用內的健康狀況監控。

  • 多執行緒應用:監控應用中的執行緒狀態,幫助分析死鎖或執行緒競爭等問題。

JConsole 是一個對開發者和運維人員極具幫助的工具,特別是在需要即時診斷或調試應用問題時。

PreviousJava Debug Wire Protocol (JDWP) 的詳細介紹NextSpring Boot

Last updated 8 months ago