3

我在大学里学习了ijvm(jvm 的一个子集),它提出了一个问题:是否可以直接在 jvm 中实现 java 应用程序的一部分以提高性能?... 就像您可以在汇编中实现 C 程序的一部分一样。

如果可能的话,我将非常感谢展示它的代码片段。

4

1 回答 1

6

是否可以直接在 jvm 中实现 java 应用程序的一部分?

我想你的意思是用 JVM 字节码编程。

对的,这是可能的。但是,这样做不太可能获得显着的改进。

为什么?

因为现代 JVM 1实际上将字节码编译为本机代码,而字节码到本机代码的编译器通常会进行一些非常严肃的优化。

所以:

  • 您对编写更好(更快)字节码的任何见解都可能是错误的。

  • 通过优化字节码,您实际上可能会干扰字节码以影响本机代码编译器的优化能力。

此外,JVM 字节码需要遵循一些旨在避免运行时类型错误的相当严格的规则。如果您的手写字节码违反了这些规则,它们将(应该!)在类加载时被验证者拒绝。

但是如果你想尝试,有编写字节码汇编语言的工具;看看有哪些 JVM 汇编器?.


1 - JDK 1.2 中的主流 (Sun) Java 首次支持 JIT 编译。在此之前,JVM 仅解释字节码,而手工编码字节码更有可能产生影响。但在那些日子里,获得更好性能的方法是用 C 编写 Java 应用程序的性能关键部分,并通过 JNI 调用 C。

于 2021-06-17T15:35:49.867 回答