9得票4回答
字节码转换:将记录类转换为可变类

我刚刚发现EBean以一种让我感到奇怪的方式对记录类文件进行字节码转换,我想知道这是否在JVM角度上是合法的,并寻求答案。 显然,可以有一个类文件,其中类扩展了java.lang.Record并定义了记录组件属性(所以它像javac创建的那样是一个“记录”),但具有以下额外的“功能”,而jav...

9得票1回答
Javap 输出:static {} 和 public {} 的区别。

我有两个示例类文件,一个来自Java应用程序的示例,另一个来自C应用程序的示例(使用LLJVM编译为字节码)。 通过使用javap -c -p查看它们的输出,我可以看到对于初始化(静态)字段,Java应用程序显示以下块: static {}; Code: 0: sipush 1339 3...

7得票3回答
为什么Java字节码中的“存储”通常紧随其后是“加载”?

当我阅读某些小Java函数的JVM字节码时,我发现在操作数栈上计算新的局部变量时,假设它将被存储在局部变量表中,但通常会立即加载到操作数栈中(仅在字节码的字面意义上)。我不太理解这个操作,这是一个不必要的操作吗?

7得票1回答
字节码中丢失了变量“final”修饰符?

分析这个简单类的字节码后,我得出结论:编译器没有保留任何有关局部变量是否为final的信息。尽管如此,我认为HotSpot编译器实际上可以使用这些信息进行优化,这听起来有些奇怪。 代码: public static void main(String[] args) { final...

7得票1回答
为什么没有ICMP指令?

如你所知,我们有大量的操作码用于比较不同类型的原始值: LCMP FCMPL FCMPG DCMPL DCMPG IFEQ IFNE IFLT IFGE IFGT IFLE IF_ICMPEQ IF_ICMPNE IF_ICMPLT IF_ICMPGE IF_ICMPGT IF_ICMPLE...