小编You*_*ess的帖子

Java字节码中的堆栈= 4.Java Compiler如何计算4值?(堆栈的深度)

Java代码:

public class SimpleRecursion {

    public int factorial(int n) {
        if (n == 0) {
            return 1;
        }
        return n*factorial(n - 1);
    }

}
Run Code Online (Sandbox Code Playgroud)

为factorial方法提供以下字节码(我执行javap来生成它):

public int factorial(int); 
descriptor: (I)I 
flags: ACC_PUBLIC 
Code:   
  stack=4, locals=2, args_size=2
     0: iload_1
     1: ifne          6
     4: iconst_1
     5: ireturn
     6: iload_1
     7: aload_0
     8: iload_1
     9: iconst_1
    10: isub
    11: invokevirtual #2                  // Method factorial:(I)I
    14: imul
    15: ireturn   
  LineNumberTable:
    line 4: 0
    line 5: 4
    line 7: 6   
  StackMapTable: number_of_entries = 1
    frame_type …
Run Code Online (Sandbox Code Playgroud)

java jvm bytecode javac javap

2
推荐指数
1
解决办法
79
查看次数

标签 统计

bytecode ×1

java ×1

javac ×1

javap ×1

jvm ×1