我想知道 - 给定一个java代码,我怎样才能看到Java编译器如何优化它?
是否有适用于此的JDK工具?
尝试谷歌,但没有任何相关性。
答案 0 :(得分:3)
要查看编译器优化的内容,只需反编译字节码,例如使用javap或JD。
要查看即时编译器优化的内容,activate debug logging(并阅读反汇编的机器代码)。
答案 1 :(得分:2)
您可以使用javap
来反汇编代码。
值得注意的是,javac
通常在优化方面做得很少;在现代JVM中,大多数优化都是由just-in-time compiler完成的,它将java字节码转换为本机机器码。
答案 2 :(得分:1)
javac
只会做一点优化,如果有的话。
Java中的优化主要由JIT编译器在运行时完成。 JIT执行的优化越多,它将生成的代码越好,但初始延迟也会增加。
获取Java即时编译器生成的本机代码:PrintAssembly需要OpenJDK 7
调试选项:Java HotSpot VM
-XX:-CITime ---- Prints time spent in JIT Compiler. (Introduced in 1.4.0.)
答案 3 :(得分:0)
有一些工具可以将字节代码转换回java代码。您可以编译代码,并获取.class
文件,将它们反向工程为java代码并查看优化。