从jHiccup开始
寫完“如何在生產中檢測和診斷慢速代碼”一文后,我受到讀者的鼓勵,嘗試從Azul系統嘗試jHiccup 。
去年,我參加了jHiccup的創建者Gil Tene的演講,探討了測量延遲的正確方法,其中,他向我們介紹了jHiccup。 它一直在我的待調查產品清單上,這給了我最終繼續進行調查的動力。
JHiccup可以測量實際程序代碼以外的系統延遲。 例如,GC時間以及其他操作系統和硬件事件會增加延遲峰值,從而使程序的運行平穩。 了解這些至關重要,因為您的程序永遠不可能比運行它的基礎環境具有更好的延遲。
簡而言之,我喜歡這個工具,并認為,既然我已經開始使用它,那么它將對我真的很有用。 這篇文章并不是要教您有關jHiccup的所有知識,我將為您提供有關它的文檔 。 這個職位是一個“ 開始接觸jHiccup指南”,告訴你我是如何得到它的運行,希望激起你的食欲嘗試一下在自己的代碼。
步驟1:下載產品
下載代碼,它是開源的,您可以從此處獲取。 解壓縮文件,您將看到我們將在下一步中使用的jHiccup.jar。
步驟2:使用jHiccup運行程序
運行jHiccup的方法有很多,但這就是我的方法。 您需要做的就是將此vm選項添加到命令行中:
-javaagent:jHiccup.jar="-d 0 -i 1000 -l hiccuplog -c"有很多配置,這里選擇的意思是:
- -d開始記錄等待時間之前的延遲–這可以忽略任何代碼預熱時間。 (30秒后默認)
- -i間隔數據,記錄數據的頻率。 (默認每5秒一次)
- -l記錄數據的日志文件的名稱。
- -c啟動控件JVM并將數據記錄到logFile.c。 與實際程序進行比較以查看是否是機器上的全局事件,超級有用。
步驟3:處理日志文件
在日志文件上運行此命令(您可以同時處理程序日志文件和.c控制日志文件)。
jHiccupLogProcessor -i hiccuplog -o myhlog這將產生兩個文件,我們將在最后一步中使用一個調用myhlog(不是myhlog.hgram),這很有趣。
步驟4:在Excel中產生圖形
現在,非常好一點。 打開電子表格jHiccupPlotter.xls,并確保啟用了宏。
您將看到一個這樣的表:
只需從第3步中選擇文件,然后選擇一個圖表標題(當您比較圖表時,這是一個非常有用的功能),并且在幾秒鐘之內您將擁有一個延遲分布圖。
例
我有一個程序(不是特別對延遲敏感的),想了解不同垃圾收集對延遲的影響。
我要做的就是用不同的垃圾收集器設置運行我的程序并比較圖表。 當然,這是我剛好不得不手工制作的示例,但是您明白了,更改jvm設置或代碼并獲得可比較的結果很容易。 控制程序對于了解計算機上正在發生的其他可能影響程序延遲的情況也至關重要。
這些是我的結果:有趣的是看到不同的GC如何影響延遲,并且使用jHiccup可以很好地證明這一點。
使用串行收集器:
使用G1收集器:
使用G1收集器–最大暫停時間設置為1ms:
使用CMS收集器:
使用并行GC:
翻譯自: https://www.javacodegeeks.com/2015/02/starting-out-with-jhiccup.html
總結
以上是生活随笔為你收集整理的从jHiccup开始的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我发现我的Java重拍了!
- 下一篇: 超市安卓电子秤(超市安卓)