• 技术文章 >java >java基础

    Java字节码执行的两种方式

    小妮浅浅小妮浅浅2021-02-26 11:11:41原创4521

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

    1、说明

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

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

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

    2、实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    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字节码
    上一篇:java装饰者模式怎么用? 下一篇:Java编写超时工具类

    相关文章推荐

    • java适配器模式是什么• java适配器模式的两种分类• java装饰者模式是什么?• java装饰者模式怎么用?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网