Java字节码执行的两种方式

美女程序员鼓励师

在正式讲解执行的方式前,我们先对字节码有一个简单的了解。平时在使用java时所看到的是java文件,不过jvm编译的有所不同,我们把它称为字节码文件。从这里就可以看出,字节码和jvm密不可分。在字节码的执行中,分为即时编译和解释执行的方式,下面我们就这两种情况展开介绍。

1、说明

(1)即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。

(2)解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程序的所有操作。

常用的是第二种方法。因为JVM规范描述有足够的灵活性,所以它可以更高效地将字节码转换成机器码。对那些对运行速度有更高要求的应用程序,可以使用解释器将Java字节码立即编译成机器码,从而很好地保证了Java代码的可移植性和高性能。

2、实例

  public static void main(java.lang.String[]);

    descriptor: ([Ljava/lang/String;)V

    flags: ACC_PUBLIC, ACC_STATIC

    Code:

      stack=2, locals=4, args_size=1

         0: iconst_1

         1: istore_1

         2: iconst_2

         3: istore_2

         4: iconst_1

         5: iconst_2

         6: invokestatic  #2                  // Method calc:(II)I

         9: istore_3

        10: return

        

  static int calc(int, int);

    descriptor: (II)I

    flags: ACC_STATIC

    Code:

      stack=6, locals=2, args_size=2

         0: iload_0

         1: i2d

         2: ldc2_w        #3                  // double 2.0d

         5: invokestatic  #5                  // Method java/lang/Math.pow:(DD)D

         8: iload_1

         9: i2d

        10: ldc2_w        #3                  // double 2.0d

        13: invokestatic  #5                  // Method java/lang/Math.pow:(DD)D

        16: dadd

        17: invokestatic  #6                  // Method java/lang/Math.sqrt:(D)D

        20: d2i

        21: ireturn

以上就是Java字节码执行的两种方式,相信大家现在已经对字节码的基础内容,有一定的了解,学会后可以对字节码展开相关的练习。

以上是 Java字节码执行的两种方式 的全部内容, 来源链接: utcz.com/z/543525.html

回到顶部