如何在windows平臺下使用hsdis與jitwatch查看JIT後的彙編碼

1. 安裝hsids

這一步比較麻煩,須要提早安裝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

 

2. 用hsdis查看JIT後的彙編碼

參考這篇文章線程

使用hsdis查看jit生成的彙編代碼3d

 

3. 用jitwatch更方便的查看JIT後的彙編碼

若是咱們使用加-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用起來仍是比較方便的(雖然安裝起來確實比較費勁),推薦使用

相關文章
相關標籤/搜索