低延遲Profile工具Flight Recorder被移植到Java 8

OpenJDK的開發者們將強大的低延遲profile能力帶到了Java 8中,可以使用非常低的開銷來監控JVM性能。這個工具叫作Flight Recorder,現在已經在多個版本的JDK中可用,比如AdoptOpenJDK。

經過十多年的開發,Java Flight Recorder(JFR)已經爲JRockit和WebLogic Server提供了底層性能監控能力。隨着JRockit和HotSpot的合併,這個工具也被帶到了Java 8和JDK 7u40的HotSpot中。與其他外部性能監控系統不一樣,JFR直接被內置在JDK中,可以準確地監控性能,不會因爲安全點或採樣對監控造成影響。JFR的性能診斷非常準確,只佔用大約2%的開銷。這些診斷數據爲開發者和運維人員提供了收集準確的性能數據的能力。

JFR的源代碼在JDK11中,免費公開,所有人都可以訪問。在被開源之前,這個功能只作爲Oracle JDK的一個收費特性,需要獲得Java SE高級版許可才能使用。要在Oracle JDK中打開這個功能,需要使用許可開關或者許可的JMX連接。將JFR移植到開源版本的JDK中讓免費用戶也能夠在非Oracle JVM中使用這個功能。隨着Oracle停止爲JDK 8提供免費支持,並且需要商業許可才能使用JDK 11+,很多開發者轉向使用免費版本,比如AdoptOpenJDK的HotSpot。

對於開發者來說,JFR有兩個方面的用處:Flight Recorder是一個自動化的黑盒記錄器,已經內置在JVM中,用於記錄信息。運維人員可以通過單獨運行的可視化控制檯Mission Control來控制黑盒,計算指標或者創建性能快照。

JFR與其他商業版或免費版的profiler有一些顯著的不同。最大的不同是JFR已經內置在JVM中,不需要集成額外的工具。有很多profiler專注於高層的指標,比如請求/響應負載時間,但JDK層並沒有“Web請求”的概念。所以,JFR默認提供的指標更多的是面向JVM的原生操作。這裏特別要提到它的高級垃圾回收分析功能。與其他只是簡單收集垃圾回收統計信息不同的是,JFR會告訴我們收集了哪些垃圾以及這些垃圾是從哪裏拋出來的。藉助這個功能,開發人員可以確切地知道如何改進性能,以及在什麼時候不應該進行垃圾回收調優。

想要了解Flight Recorder的開發人員可以先看看Marcus Hirt的演講,他是JDK Mission Control的負責人。Mikael Vidstet在洛杉磯QCon上也做了一個相同話題的演講。

原文鏈接

Low Latency Profiling Now Available in Java 8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章