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