首先交代一下我本身的測試環境:java
Ubuntu 12.04 x86-64,OpenJDK 7 64-bit Server VM(mixed mode)linux
MacOS 10.11,HotSpot 7 64-bit Server VM(mixed mode)jvm
1.如何關閉JIT?測試
通常狀況下,JIT是默認開啓的,因此這裏只存在如何關閉的問題。spa
在啓動JVM的時候,只需增長-Xint或者-Djava.compiler=NONE選項便可:
.net
java -Xint your_main_class_file_namecode
java -Djava.compiler your_main_class_file_nameip
若是是從Eclipse啓動,則須要在Run Configurations中指定上述參數。get
2.如何查看JIT生成的彙編代碼?it
有的時候,咱們須要查看JIT生成的彙編代碼,來觀察JIT如何影響代碼的執行。
完成這項任務,須要安裝一個支持庫,hsdis,步驟以下。
Linux系統:
下載linux-hsdis-amd64.so或者linux-hsdis-i386.so
重命名爲hsdis-amd64.so或者hsdis-i386.so
拷貝至$JAVA_HOME/jre/lib/amd64/目錄
個人機器上是/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/
OS X系統:
下載gnu-bsd-libhsdis-amd64.dylib或者gnu-bsd-libhsdis-i386.dylib
重命名爲hsdis-amd64.dylib或者hsdis-i386.dylib
拷貝至$JAVA_HOME/jre/lib/目錄
個人機器上是/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/hsdis-amd64.dylib
安裝完支持庫以後,在啓動JVM的時候,只需增長如下兩個選項便可:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly your_main_class_file_name
下面這個連接對此有詳細說明,能夠參考:
https://wiki.openjdk.java.net/display/HotSpot/PrintAssembly
另外,若是不安裝支持庫的話,指定上述選項並啓動JVM時會有以下錯誤:
Java HotSpot(TM) 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output
Could not load hsdis-amd64.dylib; library not loadable; PrintAssembly is disabled