使用 JConsole

JConsole (Java™ Monitoring and Management Console) 是一個圖形工具,可讓使用者監視及管理 Java 應用程式的行為。

附註: 由於 JConsole 會耗用大量系統資源, Oracle 建議只在開發環境中使用它來建立原型。 也建議遠端監視,將 JConsole 應用程式與受監視平台隔離。

JConsole 工具是以 java.lang.management API 為建置基礎。 JConsole 會連接至在相同工作站或遠端工作站上執行的應用程式。 應用程式必須配置為容許存取。

當 JConsole 連接至 Java 應用程式時,它會報告應用程式的相關資訊。 詳細資料包括記憶體用量、執行中執行緒及載入的類別。 此資料可協助您監視應用程式及 JVM 的行為。 此資訊有助於瞭解效能問題、記憶體用量問題、當掉或死鎖。

設定 JConsole 以監視 Java 應用程式

  1. 您要監視的 Java 應用程式必須使用指令行選項來啟動,這些選項可讓 JConsole 從其他系統或其他使用者存取。 JConsole 可以連接至相同系統上相同使用者所擁有的處理程序,而不需要這些選項。 下列範例顯示最簡單的監視選項集:
    -Dcom.sun.management.jmxremote.port=<port number>
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
    <port number> 的值必須是系統上的可用埠。 在此範例中, authenticatessl 選項會防止使用 Secure Sockets Layer (SSL) 進行密碼鑑別及加密。 使用這些選項可讓 JConsole 或任何其他 JMX 代理程式連接至 Java 應用程式 (如果它有權存取指定的埠)。 僅在開發或測試環境中使用這些非安全選項。 如需配置安全選項的相關資訊,請參閱 https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/connectors.html
  2. 在指令行鍵入 jconsole ,以啟動 JConsole。 您的路徑必須包含 Java 安裝架構的 bin 目錄。
  3. 即會開啟 JConsole 新建連線 對話框: 輸入您在步驟 1中指定的主機名稱和埠號。 如果您在與 Java 應用程式相同的工作站上執行 JConsole ,請將主機名稱值保留為 localhost。 若為遠端系統,請將主機欄位值設為工作站的主機名稱或 IP 位址。 如果您使用步驟 1中指定的選項,請將 使用者名稱密碼 欄位保留空白。
  4. 按一下 連接。 JConsole 會啟動並顯示 摘要 標籤。

設定 JConsole 來監視本身

JConsole 可以自行監視。 此功能對於 Java 環境的簡單疑難排解非常有用。
  1. 在指令行鍵入 jconsole ,以啟動 JConsole。 您的路徑必須包含 SDK 的 bin 目錄。
  2. 即會開啟 JConsole 的「 新建連線 」對話框: 在 遠端程序 欄位中輸入 localhost:0
  3. 按一下 連接。 JConsole 會啟動並顯示摘要標籤。

使用 JConsole 來監視 Java 應用程式

JConsole 摘要 標籤顯示所連接 JVM 的重要詳細資料。 從這裡,您可以選取任何其他標籤,以取得特定層面的詳細資料。 記憶體 標籤顯示 JVM 中每一個記憶體儲存區的用量歷程-最有用的是資料堆記憶體用量。

您也可以按一下 執行 GC 按鈕來要求執行記憶體回收。 您必須依照先前的說明,在已停用安全選項的情況下連接,或以控制使用者身分來鑑別。

執行緒 標籤會顯示目前執行中的執行緒數目及其 ID 清單。

按一下執行緒 ID 會顯示執行緒狀態及其現行堆疊追蹤。

類別 標籤會顯示自應用程式啟動以來,已載入類別的現行數目,以及已載入及已卸載類別的數目。 選取 詳細輸出 勾選框可開啟及關閉詳細類別載入輸出,以查看在用戶端 JVM 中載入的類別清單。 輸出會顯示在用戶端 JVM 的 stderr 輸出上。

MBean 標籤可讓您檢查平台 MBean 的狀態,這會提供 JVM 的詳細資料。 如需 MBean 和 J9 MXBean 延伸的相關資訊,請參閱 Eclipse OpenJ9 說明文件的 語言管理介面 一節。

最後, VM 標籤提供 Java 應用程式執行所在環境的相關資訊,包括任何 JVM 引數及現行類別路徑。

JConsole 疑難排解

JConsole 是一個 Swing 應用程式。 在與您要監視之 Java 應用程式相同的工作站上執行 JConsole ,會影響 Java 應用程式的效能。 您可以使用 JConsole 來連接遠端工作站上執行的 JVM ,以減少對應用程式效能的影響。

因為 JConsole 是一個 Java 應用程式,您可以透過啟動 JConsole 的應用程式來傳遞 Java 指令行選項,方法是在它們前面加上字首 –J。 比方說,如果要變更 JConsole 使用的資料堆大小上限,請新增指令行選項 -J-Xmx<size>

JConsole 使用「連接 API」來連接至應用程式,且只能連接至其他 J9 虛擬機器。 如果您在使用 JConsole 來監視遠端應用程式時遇到問題,主要原因可能是「連接 API」。 若要診斷問題,請參閱 Java 附加 API

已知的限制

使用本端程序清單
本端程序清單無法運作。 在 遠端程序 文字輸入欄位中使用 localhost:<port> ,以連接至本端 JVM。
概觀標籤中的 CPU 使用率
CPU 使用率顯示畫面無法運作。

進一步資訊

如需 JConsole 的詳細資料以及所顯示值的定義,請參閱 Oracle 說明文件中的 https://docs.oracle.com/javase/8/docs/technotes/guides/management/index.html