0%

Java运行时汇编指令查看

假设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
您的支持将鼓励我继续分享!