java™ 平臺的最新版本包含許多新的系統(tǒng)監(jiān)視和治理特性。在本文中,三位來自 IBM Java 技術(shù)中心團(tuán)隊(duì)的開發(fā)人員一起帶您開始使用這個 API。在快速概述了 java.lang.management 包之后,他們將指導(dǎo)您經(jīng)歷大量短小的實(shí)踐場景,探測運(yùn)行的 JVM 性能。 在 Java 2 平臺 5.0 版引入的眾多新特性中,有一個 API 可以讓 Java 應(yīng)用程序和答應(yīng)的工具監(jiān)視和治理 Java 虛擬機(jī)(JVM)和虛擬機(jī)所在的本機(jī)操作系統(tǒng)。在本文中,將學(xué)習(xí)這個新的平臺治理 API 的功能,這個 API 包含在 java.lang.management 包中。本文將讓您迅速把握在未來的 Java 平臺版本中將變得更重要的一套新的強(qiáng)大特性。
監(jiān)視和治理 5.0 虛擬機(jī)
Java 5.0 提供了監(jiān)視和治理正在運(yùn)行的虛擬機(jī)的新功能。開發(fā)人員和系統(tǒng)治理員能夠監(jiān)視 5.0 虛擬機(jī)的性能,而且對于某些屬性還可以進(jìn)行調(diào)優(yōu)。以前有過使用 Java Management Extensions(JMX)經(jīng)驗(yàn)的人都會熟悉執(zhí)行這些活動的機(jī)制。通過 JMX 技術(shù),一套需要控制的平臺資源可以被當(dāng)作簡單的、定義良好的對象,對象的屬性映射到給定資源的更低級特征上。
在平臺治理 API 中,這些定義良好的對象叫做 MXBean。假如覺得 MXBean 聽起來更像某種可能更熟悉的 MBean,那么就對了。這些 MXBean(或 平臺 MBean)在效果上,就是封裝了 5.0 平臺內(nèi)部特定部分的治理 bean。圖 1 展示了 MXBean 在更大系統(tǒng)中的位置:

在運(yùn)行著的 5.0 兼容的虛擬機(jī)中可以發(fā)現(xiàn)和定制許多不同種類的功能;例如,可以得到正在使用的即時編譯系統(tǒng)的行為細(xì)節(jié)或者獲得垃圾收集服務(wù)的進(jìn)展情況。
任何 Java 應(yīng)用程序只要獲得需要的 bean 引用(使用我們本文中介紹的技術(shù)),就能利用平臺 bean,然后調(diào)用適當(dāng)?shù)姆椒ㄕ{(diào)用。在最簡單的場景中,bean 客戶機(jī)可以發(fā)現(xiàn)客戶機(jī)所在的平臺的信息。但是客戶機(jī)還能監(jiān)視完全獨(dú)立的 JVM 的行為。這是有可能的,因?yàn)?MXBean 是一種 MBean,可以用 Java 5.0 可用的標(biāo)準(zhǔn) JMX 服務(wù)遠(yuǎn)程地進(jìn)行治理。
JConsole
bean 客戶機(jī)的一個示例就是與 Java SE 5.0 SDK 一起提供的 JConsole 工具。這是一個圖形界面,連接到 JVM 并顯示 JVM 的信息。GUI 中的選項(xiàng)卡與 JVM 的特定方面相關(guān);有 Memory、Threads 和 Classes 等選項(xiàng)卡。JConsole 工具還提供了一個整體的 Summary 選項(xiàng)卡,一個VM 選項(xiàng)卡(提供虛擬機(jī)啟動時的環(huán)境信息)和一個 MBean 選項(xiàng)卡(用戶可以用它更具體地監(jiān)視平臺 MBean 的狀態(tài))。
運(yùn)行 JConsole
在命令提示符下輸入 jconsole 就可以啟動 JConsole(假設(shè) SDK 的 bin 目錄在當(dāng)前路徑中)。請輸入運(yùn)行要監(jiān)視的 JVM 的主機(jī)名,以及偵聽治理請求的端口號 —— 以及其他需要的認(rèn)證細(xì)節(jié) —— 然后點(diǎn)擊 Connect。用默認(rèn)值 localhost 和端口 0 點(diǎn)擊 Connect,監(jiān)視的是用于運(yùn)行 JConsole 自己的 JVM(因?yàn)?JConsole 是一個 Java 進(jìn)程)。這稱作自監(jiān)視模式。圖 2 展示了 JConsole 的啟動情況:

JConsole 在工作
到 JVM 的連接建立之后,JConsole 先顯示 Summary 選項(xiàng)卡,如圖 3 所示:

從這開始,可以選擇其他選項(xiàng)卡。例如 Memory 選項(xiàng)卡,如圖 4 所示,展示了 JVM 中每個內(nèi)存池的使用歷史:

新聞熱點(diǎn)
疑難解答
圖片精選