假设Java主类名为“Main.class”,如需查看运行时汇编指令,则执行:
1 | java -XX:+UnlockDiagnosticVMOptions -Xcomp -XX:+PrintAssembly -XX:CompileCommand=compileonly,Main.main Main |
关于-Xcomp
表示“对于字节码,使用编译器编译成汇编码或者机器码后执行,而不使用解释器解释执行”,详见《java命令》。
关于-XX:CompileCommand=compileonly,Main.main
参见[4]。
有可能抛出如下错误:
1 | Could not load hsdis-amd64.so; library not loadable; PrintAssembly is disabled |
在Ubuntu(Oracle JDK 1.8)上的解决步骤如下:
sudo apt-get install libhsdis0-fcml
cp -L /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/hsdis-amd64.so ${Oracle JDK 1.8安装目录}/jre/lib/amd64/hsdis-amd64.so
参考文献: [1]https://www.jianshu.com/p/93821b08e774 [2]https://askubuntu.com/questions/710392/java-8-oracle-1-8-0-66-problem-with-printassembly-could-not-load-hsdis-amd64 [3]https://superuser.com/questions/216919/how-to-copy-symlinks-to-target-as-normal-folders [4]https://blog.csdn.net/ning0323/article/details/75451955 [5]https://www.infoq.cn/article/zzm-java-hsdis-jvm