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
“
下载地址如下:https://github.com/atzhangsan/file_loaded
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
“
下载路径如下:https://github.com/AdoptOpenJDK/jitwatch/releases
如果你有兴趣的话,当然也可以参考官方文档进行编译。
JITWatch链接如下:
“
https://github.com/AdoptOpenJDK/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
本文暂时没有评论,来添加一个吧(●'◡'●)