• 技术文章 >java >java基础

    Java字节码执行的两种方式

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

    在正式讲解执行的方式前,我们先对字节码有一个简单的了解。平时在使用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字节码
    品易云
    上一篇:java装饰者模式怎么用? 下一篇:Java编写超时工具类

    相关文章推荐

    • java中CGLIB动态代理的介绍• java中不同代理的对比• java适配器模式是什么• java适配器模式的两种分类• java装饰者模式是什么?• java装饰者模式怎么用?

    全部评论我要评论

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

  • 取消发布评论
  • 

    Python学习网