Java飞行记录器(JFR)
JFR是Java分析器,它使您可以研究代碼的運行時特征。 通常,您將使用探查器來確定代碼的哪些部分導致大量內(nèi)存分配或?qū)е孪倪^多的CPU。
有很多產(chǎn)品在那里。 過去,我使用過YourKit,OptimizeIt,JProfiler,NetBeans等。 每個都有其優(yōu)點,并且在很大程度上取決于您所選擇的個人偏好。 我當前個人最喜歡的是YourKit。 它可以很好地集成到IntelliJ中,具有相對較低的開銷,并且可以很好地呈現(xiàn)其報告。
事實是,概要分析是一門非常不精確的科學,通常值得研究多個剖析器以更清晰地了解程序中到底發(fā)生了什么。 據(jù)我所知,大多數(shù)探查器都依賴JVMP / JVMTI代理來探查Java程序。 一個主要的問題是安全點 。 這意味著您的Java程序只有在安全點才能被探測。 這意味著您將錯誤地了解程序中實際發(fā)生的情況,尤其是當許多活動處于安全點之間時。 同樣,所有探查器也會在不同程度上增加開銷。 Profiler的開銷將改變程序的特性,并可能導致分析結(jié)果產(chǎn)生誤導。 這里有更多信息。
輸入JFR。 自7u40版以來,JRF已與JDK捆綁在一起。 通過直接訪問JVM構建JFR。 這不僅意味著開銷很低(幾乎在所有情況下都聲稱少于1%),而且也不依賴安全點。 在這里查看一個示例,該示例顯示與YourKit和JFR的分析有多么根本的不同。
要運行JFR,您需要將以下開關添加到Java命令行中:
-XX:+UnlockCommercialFeatures -XX:+FlightRecorderJFR位于Java Mission Control(JMC)中。 要啟動JMC,只需在命令行中鍵入jmc ,如果您的路徑中包含JDK,則JMC控制臺將啟動。 您應該在左側(cè)窗格中看到Java程序。 右鍵單擊您的程序,然后開始飛行記錄。
您將看到一個對話框,您可以在其中接受默認值(一分鐘的示例),然后將顯示結(jié)果。 值得付出選擇,以找到最適合自己的方式。 與所有好的產(chǎn)品一樣,該GUI非常直觀。
從命令行開關可以看出,這是商業(yè)功能。 我不確定這意味著什么,但是您可以在這里的文檔中了解更多信息。 您也可以從命令行運行它,所有這些都在文檔中。
我確實發(fā)現(xiàn)的一個問題是,當我下載最新的Java8快照(此時為1.8.0_40-ea)時,我無法啟動程序并收到以下消息:
/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin/ Error: Trying to use 'UnlockCommercialFeatures', but commercial features are not available in this VM. Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.總而言之,JFR是對任何開發(fā)人員工具包的重要補充,只要您使用的是JDK版本7u40或更高版本,肯定值得在您的代碼中進行嘗試。
(我鼓勵您查看上一篇文章結(jié)合JFR 進行性能優(yōu)化的第一條規(guī)則 )
翻譯自: https://www.javacodegeeks.com/2015/01/java-flight-recorder-jfr.html
總結(jié)
以上是生活随笔為你收集整理的Java飞行记录器(JFR)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 序列化的概念
- 下一篇: 电脑开虚拟机(自己开虚拟机ddos)