正文:
進行GC性能調優時, 需要明確瞭解, 當前的GC行為對系統和用戶有多大的影響。有多種監控GC的工具和方法, 本章將逐一介紹常用的工具。
JVM 在程序執行的過程中, 提供瞭GC行為的原生數據。那麼, 我們就可以利用這些原生數據來生成各種報告。原生數據(raw data) 包括:
可以通過這些數據算出各種指標, 例如: 程序的內存分配率, 提升率等等。本章主要介紹如何獲取原生數據。 後續的章節將對重要的派生指標(derived metrics)展開討論, 並引入GC性能相關的話題。
從 JVM 運行時獲取GC行為數據, 最簡單的辦法是使用標準 JMX API 接口. JMX是獲取 JVM內部運行時狀態信息 的標準API. 可以編寫程序代碼, 通過 JMX API 來訪問本程序所在的JVM,也可以通過JMX客戶端執行(遠程)訪問。
最常見的 JMX客戶端是 JConsole 和 JVisualVM (可以安裝各種插件,十分強大)。兩個工具都是標準JDK的一部分, 而且很容易使用. 如果使用的是 JDK 7u40 及更高版本, 還可以使用另一個工具: Java Mission Control( 大致翻譯為 Java控制中心, jmc.exe
)。
所有 JMX客戶端都是獨立的程序,可以連接到目標JVM上。目標JVM可以在本機, 也可能是遠端JVM. 如果要連接遠端JVM, 則目標JVM啟動時必須指定特定的環境變量,以開啟遠程JMX連接/以及端口號。 示例如下:
java -Dcom.sun.management.jmxremote.port=5432 com.yourcompany.YourApp
上一篇