资料 2:查看 Java 代码对应的汇编代码
Java 编译的过程会将代码先编译成字节码,然后再编译成机器码,中间并不会涉及汇编代码
查看 Java 代码对应的汇编代码,是件挺麻烦的事情,需要使用额外的反汇编工具 hsdis,将机器码再反汇编为汇编代码
hsdis 安装的过程如下所示
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u cd jdk8u/hotspot/src/share/tools/hsdis/ wget http://ftp.heanet.ie/mirrors/ftp.gnu.org/gnu/binutils/binutils-2.30.tar.gz tar -xzf binutils-2.30.tar.gz make BINUTILS=binutils-2.30 ARCH=amd64 # java 8 sudo cp build/macosx-amd64/hsdis-amd64.dylib /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk /Contents/Home/jre/lib/server/ # java 9 onwards sudo cp build/macosx-amd64/hsdis-amd64.dylib /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/lib/server/
安装完成之后,我们在使用以下命令来输出汇编代码
Java -XX:+PrintAssembly -Xcomp -XX:CompileCommand=compileonly,Hello.test com.wz.Hello -Xcomp 让虚拟机以编译模式执行代码 -XX:CompileCommand=compileonly,Hello.test 只编译 test() -XX:+PrintAssembly 输出反汇编内容
为了方便查看 Java 代码与汇编代码的对应关系,我们可以进一步安装 JITWatch 软件,如下所示
1.下载源码: git clone https://github.com/AdoptOpenJDK/jitwatch.git 2.编译 cd jitwatch mvn clean compile test exec:java 3.启动(仍在 jitwatch 目录下) sh launchUI.sh
本文来自博客园,作者:lidongdongdong~,转载请注明原文链接:https://www.cnblogs.com/lidong422339/p/17392001.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步