Skip to main content

Java 字节码反编译成汇编-使用JITWatch

finen...About 2 minJavaToolJavaTool

Java 字节码反编译成汇编

本位以windows环境为前提,JDK版本为Oracle Sun JDK8-64位

Hsdis环境准备

1.下载hsdis-amd64.dylib

下载地址如下:https://github.com/evolvedmicrobe/benchmarks/blob/master/hsdis-amd64.dylibopen in new window

2.下载hsdis-amd64.dll

下载地址如下:https://github.com/atzhangsan/file_loadedopen in new window

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验证是否配置成功。如果出现如下所示则说明配置成功。

image-20210414230849483
image-20210414230849483

5.自行构建hsdis(如果你有兴趣的话)

如果你有兴趣自行编译hsdis的话,可以参考如下的几个链接,然后把编译好的文件放在jdk的jre目录下的如上所3述路径。

1.http://www.chrisnewland.com/building-hsdis-on-linux-amd64-on-debian-369open in new window

2.http://psy-lob-saw.blogspot.com/2013/01/java-print-assembly.htmlopen in new window

JITWatch环境

1.下载JITWatch

下载路径如下:https://github.com/AdoptOpenJDK/jitwatch/releasesopen in new window

如果你有兴趣的话,当然也可以参考官方文档进行编译。

JITWatch链接如下:

https://github.com/AdoptOpenJDK/jitwatchopen in new window

编译命令如下:

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,启动成功后如下所示

image-20210414232505669
image-20210414232505669

b.配置,点击sandbox按钮打开窗口,再点击Configure Sandbox按钮,配置如下几个参数

1.java classes目录

2.java 运行目录为你本地的配置使用的JDK路径

3.java运行参数,添加hsdis的运行参数配置

image-20210414233652204
image-20210414233652204

c.运行,点击open按钮打开需要编译的java代码,点击Run按钮运行得到下图所示

image-20210414232726380
image-20210414232726380
image-20210414234418226
image-20210414234418226

3.JITwatch简单使用

模块化查看字节码和汇编码

image-20210414234700267
image-20210414234700267

使用topList查看资源占用率

在JITWatch窗口点击TopList按钮,即可查看资源占用率。

image-20210414235239556
image-20210414235239556

更多资料

1.https://www.chrisnewland.com/images/jitwatch/HotSpot_Profiling_Using_JITWatch.pdfopen in new window

2.https://github.com/AdoptOpenJDK/jitwatch/wikiopen in new window

参考文章

1.利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码.https://blog.csdn.net/hengyunabc/article/details/26898657open in new window

2.JITWatch Wiki.https://github.com/AdoptOpenJDK/jitwatch/wikiopen in new window

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=17nuh698omdi4open in new window

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8