Java 字节码反编译成汇编-使用JITWatch
Java 字节码反编译成汇编
本位以windows环境为前提,JDK版本为Oracle Sun JDK8-64位
Hsdis环境准备
1.下载hsdis-amd64.dylib
下载地址如下:https://github.com/evolvedmicrobe/benchmarks/blob/master/hsdis-amd64.dylib
2.下载hsdis-amd64.dll
3.配置hsdis-amd64.dylib和hsdis-amd64.dll
a.将下载好的hsdis-amd64.dll文件放置在JDK路径下\jre\bin
目录下。
e.g. C:\Program Files\Java\jdk1.8.0_161\jre\bin
b.将下载好的hsdis-amd64.dylib文件放置在JDK路径下的\jre\lib
目录下。
e.g. C:\Program Files\Java\jdk1.8.0_161\jre\lib
4.测试验证是否配置成功
使用命令java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -version
验证是否配置成功。如果出现如下所示则说明配置成功。
5.自行构建hsdis(如果你有兴趣的话)
如果你有兴趣自行编译hsdis的话,可以参考如下的几个链接,然后把编译好的文件放在jdk的jre目录下的如上所3
述路径。
1.http://www.chrisnewland.com/building-hsdis-on-linux-amd64-on-debian-369
2.http://psy-lob-saw.blogspot.com/2013/01/java-print-assembly.html
JITWatch环境
1.下载JITWatch
如果你有兴趣的话,当然也可以参考官方文档进行编译。
JITWatch链接如下:
编译命令如下:
ant编译:
ant clean compile test run
maven编译:
mvn clean compile test exec:java
gradle编译:
gradlew clean build run
2.配置运行JITWatch
a.启动,使用java -jar jitwatch-ui-1.4.0-shaded-win.jar
启动jitwatch,启动成功后如下所示
b.配置,点击sandbox
按钮打开窗口,再点击Configure Sandbox
按钮,配置如下几个参数
1.java classes目录
2.java 运行目录为你本地的配置使用的JDK路径
3.java运行参数,添加hsdis的运行参数配置
c.运行,点击open
按钮打开需要编译的java代码,点击Run
按钮运行得到下图所示
3.JITwatch简单使用
模块化查看字节码和汇编码
使用topList查看资源占用率
在JITWatch窗口点击TopList
按钮,即可查看资源占用率。
更多资料
1.https://www.chrisnewland.com/images/jitwatch/HotSpot_Profiling_Using_JITWatch.pdf
2.https://github.com/AdoptOpenJDK/jitwatch/wiki
参考文章
1.利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码.https://blog.csdn.net/hengyunabc/article/details/26898657
2.JITWatch Wiki.https://github.com/AdoptOpenJDK/jitwatch/wiki
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=17nuh698omdi4