有时,我们想要看看我们写的代码,对应的汇编代码到底是什么,就用到了这个.
那么如何实现呢?
在通过java命令运行程序时,加入-XX:+PrintAssembly参数即可,如果是Product版本的JVM,那么还需要在上面的那个参数前面加上-XX:+UnlockDiagnosticVMOptions.
比如,我使用下面的命令来运行一个测试程序:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly TestTreeSet
如果你是使用的Oracle JDK,那么很不幸,你可能会遇到这么一个错误:
Could not load hsdis-amd64.so; library not loadable; PrintAssembly is disabled
这咋整?
对于Linux,我们可以去这里下载linux-hsdis-amd64.so,然后将其重命名为hsdis-amd64.so,然后移动到$JAVA_HOME/jre/lib/amd64/中.
然后再运行上面的命令就可以了.
我们的测试程序的源代码为:
输出的汇编代码太多,这里我们只贴出一部分:
需要注意的是,这只是linux版本的解决方案,如果你是使用的windows版本,那么请自行寻找解决方案.