通過(guò)javap 命令勃黍,可以將字節(jié)碼文件反編譯钳枕。如通過(guò)下面的命令:
javap -c Xxxx.class
而有時(shí)候想看某些JDK底層實(shí)現(xiàn)瑰步,發(fā)現(xiàn)反編譯得到的代碼并沒(méi)有什么幫助姨拥,因此本文介紹如何查看Java的匯編指令润歉,查看Java代碼最真實(shí)的運(yùn)行細(xì)節(jié)模狭。
Java本身提供這個(gè)支持,但需要引入而外的包(hsdis-amd64.dylib
)卡辰。
Mac下:
https://github.com/evolvedmicrobe/benchmarks/blob/master/hsdis-amd64.dylib
下載下來(lái)后胞皱,將其放置到j(luò)re lib目錄下即可。
查看Java的匯編指令
1九妈、可以使用命令
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly Main
(Main是class文件)
2反砌、在IDEA配置VM options,打印匯編指令萌朱,如下圖宴树。
-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly
這種方式,在運(yùn)行程序時(shí)晶疼,直接在控制臺(tái)打印匯編指令酒贬。
如果遇到:
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
下載上面的庫(kù)文件放到j(luò)re/lib下即可。