Graal – 新的 JIT

Telemarketing List helps companies reach the right prospects with targeted and reliable telemarketing data.
Post Reply
roseline371274
Posts: 919
Joined: Mon Dec 23, 2024 7:00 am

Graal – 新的 JIT

Post by roseline371274 »

为了使您的 Java 代码真正运行,您首先必须编译您的代码。通过运行 javac 命令您可以轻松完成此操作。源代码已转换为JVM字节码。现在该字节码无法在您的机器上运行。需要将其更改为您的计算机可以理解的字节码。这是由 JVM 的解释器完成的。如果您只使用基本解释器执行此操作一次,那么您的代码就会非常慢。因此,JVM 有一个复杂的编译器,可以在执行之前将低效的字节码转换为高度动态优化的字节码。这是即时 (JIT) 编译器,在 Java Hotspot VM 中,此过程由 C2 编译器完成 (链接)。

当前的编译器非常高效,并且多年来不断得到改进。然而,去年我们没有取得任何重大的进步。这是因为编译器已经变得非常复杂,很少有人完全理解它的工作原理。甚至撰写本文的人也会告诉你,几乎不可能带来巨大的改变。该编译器是用 C++ 的一种方言编写的:这是一种不安全的语言,需要大量额外的编码才能使其“安全”运行。

输入新的 JIT 编译器 Graal。如果你访问Graal 的git页面,你会发现它是用 Java 编写的。这意味着您在开发编译器时可以获得 Java 的所有现代优势。 IDE、调试、分析、调试,当然还有一个非常大的开发社区可以帮华人海外数据 助您改进编译器。通过做出这个决定,他们减轻了旧编译器的最大缺点之一。

本质上,编译器代码有一个相对简单的界面。它将 byte[] 转换为另一个 byte[]。在此转换过程中,它会优化 byte[] 中的代码,从而提高代码执行的性能。如果你深入研究编译器,你会发现它很快变得相当复杂。这是因为编译器根据以前的执行情况动态地改变代码。为了使优化更加清晰,Graal 团队创建了一个可视化工具,可以帮助您了解正在对一段代码进行的优化。



由于 Graal 的设置和优化代码的方式,它还允许您指定自己的优化。这意味着如果您的应用程序存在某些边缘情况,您可以引入自己的优化。

虽然旧编译器可能已经调整到其最大容量,但 Graal 编译器才刚刚起步。我相信随着这个编译器的引入,我们将看到新的性能提升,特别是在后续版本中引入的 Java 部分,例如流 API。

至于 JIT 编译器的稳定性,我已经在 Graal 编译器上本地运行我的 java 代码超过 3 个月了,没有任何问题。我知道这并不能证明很多事情,但是对我个人而言,这证明了 Graal 是成为新虚拟机的潜在候选者。
Post Reply