java - Java 如何高效地解释大于 1 字节、未对齐的字节码常量?

标签 java jvm vm-implementation

虽然所有 Java 字节码都是 1 字节宽,但有时也存在可变大小的常量,其范围可以从 1 字节到 8 字节。 java 如何有效地获取这些操作数大于一字节的指令,因为这种数据访问是未对齐的。最后,java 虚拟机如何在不支持未对齐数据访问的平台(例如 ARM、Alpha)上执行此操作?

最佳答案

这无法有效地完成。解决方案是(您可能知道):

  • 微汇编器(如果可行)(不是 ARM),对 CPU 重新编程;
  • 加载时间转换:更好、更快的解释字节码(不太可能);
  • 加载时间转换:简单的编译;
  • 延长即时编译;
  • 预编译。

请注意,字节代码的解释开销并不比字代码高很多,特别是解释周期本身的开销最大。

尽管如此,我还是在旧处理器上做了一些工作,使用可定制的可优化解释器,这很有帮助。

可能会提到 GNU java 编译器。

关于java - Java 如何高效地解释大于 1 字节、未对齐的字节码常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24009417/

相关文章:

c - 用于解释器的基于堆栈的 VM 的替代方案

python - 如何创建从 raw_input 创建的字典/列表/类

android - 为什么 Android 上的每个 App 都有一个单独的 VM(Dalvik/ART) 实例?

java - Dozer Mapper 不直接映射

java - 在java中通过asynchronousFileChannel写入时丢失数据

java - Spring AOP——如何防止派生类被针对

linux - 编辑 VM 选项文件后 Intellij IDEA 不启动

Java 复杂的列表数组迭代

java - 如何在 64 位 JVM 上运行 TeamCity

java - 字体 'Arial' 对 JVM 不可用