Windows安裝HSDIS彤侍、JITWatch
JVM的學習很多時候得看著字節(jié)碼和匯編代碼才好理解,所以先下載HSDIS和JITWatch做好準備逆趋。
按照教程一步一步的來
https://dropzone.nfshost.com/hsdis/
1盏阶、下載Cygwin,傻瓜式安裝
2、將這些搜索出來(有個搜索窗口闻书,點擊all/devel展開)名斟,雙擊一下skip
gcc-core
make
-
mingw64-i686-gcc-core
(only needed forhsdis-i386.dll
) -
mingw64-x86_64-gcc-core
(only needed forhsdis-amd64.dll
)
3、Download GNU binutils魄眉,推薦安裝個迅雷插件砰盐,感覺比瀏覽器下的快,雖然也不大坑律,將安裝包放到家目錄
這就是和Linux命令行一樣的岩梳,雙擊運行之后,`pwd`看看家目錄在哪(就是你安裝Cygwin的路徑下晃择,/home/username)
將安裝包丟到家目錄
4冀值、tar xvf binutils-2.35.1.tar.xz
解壓
5、趁著解壓的閑工夫藕各,將hsdis給下載下來
最好下一個和自己jdk版本相同的吧池摧,避免后面出問題,可能你會想知道jdk8和jdk8u的區(qū)別
6激况、丟到家目錄,解壓膘魄,然后一直來到hidis文件夾下乌逐,注意是找到makefile文件所在的那個文件夾,就是src/share/tools/hsdis/
make OS=Linux MINGW=x86_64-w64-mingw32 BINUTILS=~/binutils-2.35.1
進行編譯安裝
這里安裝可是碰到大坑了创葡,gcc和binutils版本可能不對付浙踢,所以選擇自己想要的版本怕是搞不了,直接安裝人家默認版本吧灿渴。就按照步驟來洛波。
7胰舆、整到hisdis-amd64.dll之后丟到jre/bin/server目錄里就完事了
8、下載JITWatch
9蹬挤、運行JITWatch
mvn clean compile test exec:java
10缚窿、使用JITWatch
-XX:+UnlockDiagnosticVMOptions
-
-Xcomp
以純編譯方式運行,觸發(fā)JIT -
-XX:+PrintAssembly
反編譯 -
-XX:+LogCompilation
保留編譯日志,JITWatch要看的就是這個日志 -
-XX:LogFile=jit.log
日志的路徑和名字 -
-XX:CompileCommand=compileonly,*VolatileTest.increase
指定只編譯的方法焰扳,不然你看著短短的代碼編譯出來一大堆東西倦零,要等很久的
11、打開log文件吨悍,指定source文件和classes文件的位置
費了老大功夫扫茅,終于看到volatile底層調(diào)用的這個lock指令了,這就是解決指令重排序的底層實現(xiàn)育瓜。