用 jconsole 在 Linux 上監控你的 Java
如何使用 Java 開發工具包中的 Java 監控和管理控制臺。
Java 開發工具包(JDK)提供了開發 Java 應用程序的二進制文件、工具和編譯器。其中一個有用的工具是 jconsole
。
為了演示,我將使用 WildFly J2EE 應用服務器,它是 JBOSS 開源應用服務器項目的一部分。首先,我啟動了一個獨立的實例。
~/wildfly/24.0.1/bin$ ./standalone.sh
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /home/alan/wildfly/24.0.1
JAVA: /usr/lib/jvm/java-11-openjdk-11.0.11.0.9-5.fc34.x86_64/bin/java
現在,在另一個終端,輸入 jconsole
。
$ jconsole
啟動后,jconsole 會列出本地實例。選擇“本地進程”,然后選擇進程的名稱并點擊“連接”。這就是連接并開始使用運行中的 Java 虛擬機(JVM)的 jconsole 的全部過程。
jconsole 與本地進程的新連接屏幕
概述
這個 Java 監控和管理控制臺在儀表板的頂部顯示進程標識符(PID)。“概述”標簽有四個圖表,顯示“堆內存使用情況”、“線程”、“類”和“CPU 使用情況”的重要信息。
jconsole 儀表板顯示堆內存使用量、線程、類和 CPU 使用量
沿著頂部的標簽提供每個區域的更詳細的視圖。
內存
“內存”標簽顯示 JVM 所使用的內存的各個方面的圖表。分配給 JVM 的服務器系統內存量被稱為“堆”。這個屏幕還提供了關于堆的內部組件使用情況的詳細信息,例如 “伊甸園”、“老年代” 和 “幸存者區”。你也可以手動請求一個垃圾收集動作。
jconsole 內存標簽
線程
“線程”標簽顯示有多少線程在運行。你也可以手動檢查是否存在死鎖。
jconsole 線程儀表板顯示了隨時間變化的線程數量和滾動的線程列表
類
“類”標簽告訴你有多少類被加載,有多少被卸載。
jconsole 類標簽顯示隨著時間推移加載的類數量
虛擬機摘要
“虛擬機摘要”標簽提供了許多關于應用程序和主機系統的細節。你可以了解你所處的操作系統和架構、系統內存總量、CPU 數量,甚至交換空間。
jconsole 虛擬機摘要標簽
摘要中顯示的關于 JVM 的進一步細節,包括當前和最大的堆大小以及正在使用的垃圾收集器的信息。底部的窗格列出了傳遞給 JVM 的所有參數。
MBeans
最后一個標簽,MBeans,讓你通過所有的 MBeans 向下鉆取,以查看每個 MBeans 的屬性和值。
MBeans 標簽
總結
Java 已經存在了很長時間,它將繼續為全球數百萬的系統提供動力。有很多開發環境和監控系統可以使用,但像 jconsole
這樣的包含在基本工具包中的工具非常有價值。