2

我想知道 - 给定一个 java 代码,我怎样才能看到 Java 编译器如何优化它?

有没有 JDK 工具可以解决这个问题?

试图谷歌,但没有任何相关的出现。

4

4 回答 4

3

要查看编​​译器优化了什么,只需反编译字节码,例如使用javapJD

要查看即时编译器优化了什么,请激活调试日志记录(并阅读反汇编的机器代码)。

于 2013-09-15T11:07:39.813 回答
2

您可以使用javap反汇编代码。

值得牢记的是,javac通常通过优化的方式做的很少;在现代 JVM 中,大多数优化都是由即时编译器完成的,该编译器将 java 字节码翻译成本地机器码。

于 2013-09-15T11:06:55.750 回答
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.)
于 2013-09-15T11:21:28.987 回答
0

有一些工具可以将字节码转换回 Java 代码。您可以编译代码,获取.class文件,将它们逆向工程为 java 代码并查看优化。

于 2013-09-15T11:05:49.360 回答