這一步比較麻煩,須要提早安裝cygwin,以及下載openjdk的源碼java
具體步驟請參考下面的兩篇文章git
How to build hsdis-amd64.dll and hsdis-i386.dll on Windowsgithub
在64位Windows上編譯hsdismaven
編譯時還遇到兩個小坑工具
a. 使用最新的binutils-2.29沒法編譯成功,最後只能下載binutils-2.27的包從新編譯ui
b. make的時候使用-j4參數但願加速編譯,結果反而編譯失敗,只能去掉-j4參數繼續單線程編譯,比較慢編碼
編譯完成後,將/hsdis/build/Linux-amd64裏生成的hsdis-amd64.dll文件複製到$JAVA_HOME/jre/bin/server裏便可.net
參考這篇文章線程
若是咱們使用加-XX:+PrintAssembly參數的方法直接查看JIT後的彙編代碼,會獲得不少不少的結果,很是難以看懂。
還好有個叫作jitwatch的工具能夠幫助咱們分析。
安裝方法:
a. 去jitwatch的github主頁上下載源碼,download zip就好了
b. 肯定電腦上已經安裝了maven3組件,而後在解壓後的jitwatch源碼目錄裏執行mvn clean compile exec:java
c. jitwatch的圖形界面啓動,以下圖所示
使用方法:
a. 使用-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:+LogCompilation -XX:LogFile=jit.log 參數啓動你的應用程序,而後工做目錄下就會產生一個名爲jit.log的文件了,裏面內容不少,試圖人肉分析基本是徒勞的。
b. 運行jitwatch,點擊"Open Log"按鈕,加載jit.log文件
c. 點擊"Config"按鈕,設置應用的源碼路徑和編譯後的Class路徑,以下圖所示:
d. 點擊"Start"按鈕,而後在左邊的樹形圖裏選擇本身想要分析的Class,而後右邊點擊method,就會彈出彙編碼分析界面了,以下圖所示:
e. 分析界面分爲左中右三欄,左邊爲java源碼,中間爲java字節碼,右邊爲jit後的彙編碼,若是進行過屢次jit編譯,還能分別查看編譯結果,以下圖所示:
總之,hsdis+jitwatch用起來仍是比較方便的(雖然安裝起來確實比較費勁),推薦使用