-1

我很喜欢将字节码编译为本机代码,但它不会重新引入安全问题吗?例如,它不是缺少运行时检查,例如检查数组边界吗?

好的,如果您编译受信任的 Java 代码,它可能不会做任何错误,但可能还有其他情况。

4

1 回答 1

0

提前编译器没有理由不将正常的运行时检查包含到已编译的代码中。此外,如果它不这样做,那么它就不会创建一个与常规程序相匹配的提前程序。那将是一个错误。

已建立的 JDK 中的常规 Hotspot 即时编译器将字节码转换为本机代码。提前编译所做的是提前做好工作。通过向您展示可以配置 JDK11 使用的Graal JIT的代码,有一个关于即时工作如何工作的精彩视频。

通过提前运行编译器,您可以获得更快的启动时间和更小的内存占用。此时您可能无法获得像 JIT 编译器那样快速的代码,因为 JIT 编译器可以根据代码遇到的数据进行优化。提前编译器无法猜测永远不会遇到哪些代码路径。

于 2019-06-07T18:35:10.760 回答