Java 最小内存访问数

Java 最小内存访问数,java,memory,architecture,stack,execution-time,Java,Memory,Architecture,Stack,Execution Time,考虑java语句的执行 e=(a-b)+(c-d) 使用以下各项所需的最小内存访问次数是多少: 基于累加器架构的处理器 具有至少4个通用寄存器的处理器 具有基于堆栈的体系结构的处理器 Java代码,编译后的字节码,我们写的不会在它在JVM上执行的处理器中执行。然后,JIT编译器负责执行该语句,而JIT中语句e=(a-b)+(c-d)的解释对于Java程序员来说是隐藏的 JVM使用堆栈架构,您可以使用javap命令查看字节码执行情况 private static void test(in

考虑java语句的执行

e=(a-b)+(c-d)
使用以下各项所需的最小内存访问次数是多少:

  • 基于累加器架构的处理器
  • 具有至少4个通用寄存器的处理器
  • 具有基于堆栈的体系结构的处理器

  • Java代码,编译后的字节码,我们写的不会在它在JVM上执行的处理器中执行。然后,JIT编译器负责执行该语句,而JIT中语句e=(a-b)+(c-d)的解释对于Java程序员来说是隐藏的

    JVM使用堆栈架构,您可以使用javap命令查看字节码执行情况

        private static void test(int a, int b, int c, int d) {
        int e = (a - b) +  (c - d);
    }
    
    上述方法的字节码为

      private static void test(int, int, int, int);
      flags: ACC_PRIVATE, ACC_STATIC
        Code:
          stack=3, locals=5, args_size=4
             0: iload_0
             1: iload_1
             2: isub
             3: iload_2
             4: iload_3
             5: isub
             6: iadd
             7: istore        4
             9: return
          LineNumberTable:
            line 36: 0
            line 37: 9
          LocalVariableTable:
            Start  Length  Slot  Name   Signature
                   0      10     0     a   I
                   0      10     1     b   I
                   0      10     2     c   I
                   0      10     3     d   I
                   9       1     4     e   I
    

    根据本例中的字节码,堆栈已被访问4次(i_加载)

    我在想象一个爪哇强盗拿枪指着你的头?你应该把它放在
    policyOverflow
    上,取而代之的是:/你尝试了什么?老兄!做你自己的功课。在每种情况下,最小值都是零,因为编译器可能会优化计算(
    gcc
    javac
    编译器可以做到这一点),一个存储等于5。