java 11 Java Flight Recorder


Flight Recorder源自飛機的黑盒子

Flight Recorder以前是商業版的特性,在java11當中開源出來,它可以導出事件到文件中,之后可以用Java Mission Control來分析。可以在應用啟動時配置java -XX:StartFlightRecording,或者在應用啟動之后,使用jcmd來錄制,比如

Pid是進程id

$ jcmd <pid> JFR.start

$ jcmd <pid> JFR.dump filename=recording.jfr

$ jcmd <pid> JFR.stop

img

Jdk12的jfr工具可以打開生成的ifr文件進行分析

img

Cpu使用率

img

Gc信息

img

是 Oracle 剛剛開源的強大特性。我們知道在生產系統進行不同角度的 Profiling,有各種工具、框架,但是能力范圍、可靠性、開銷等,大都差強人意,要么能力不全面,要么開銷太大,甚至不可靠可能導致 Java 應用進程宕機。

而 JFR 是一套集成進入 JDK、JVM 內部的事件機制框架,通過良好架構和設計的框架,硬件層面的極致優化,生產環境的廣泛驗證,它可以做到極致的可靠和低開銷。在 SPECjbb2015 等基准測試中,JFR 的性能開銷最大不超過 1%,所以,工程師可以基本沒有心理負擔地在大規模分布式的生產系統使用,這意味着,我們既可以隨時主動開啟 JFR 進行特定診斷,也可以讓系統長期運行 JFR,用以在復雜環境中進行“After-the-fact”分析。還需要苦惱重現隨機問題嗎?JFR 讓問題簡化了很多。

在保證低開銷的基礎上,JFR 提供的能力也令人眼前一亮,例如:我們無需 BCI 就可以進行 Object Allocation Profiling,終於不用擔心 BTrace 之類把進程搞掛了。對鎖競爭、阻塞、延遲,JVM GC、SafePoint 等領域,進行非常細粒度分析。甚至深入 JIT Compiler 內部,全面把握熱點方法、內聯、逆優化等等。JFR 提供了標准的 Java、C++ 等擴展 API,可以與各種層面的應用進行定制、集成,為復雜的企業應用棧或者復雜的分布式應用,提供 All-in-One 解決方案。而這一切都是內建在 JDK 和 JVM 內部的,並不需要額外的依賴,開箱即用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM