Java字节码执行的两种方式

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

1、说明

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

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

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

2、实例

publicstaticvoidmain(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//Methodcalc:(II)I
9:istore_3
10:return

staticintcalc(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//double2.0d
5:invokestatic#5//Methodjava/lang/Math.pow:(DD)D
8:iload_1
9:i2d
10:ldc2_w#3//double2.0d
13:invokestatic#5//Methodjava/lang/Math.pow:(DD)D
16:dadd
17:invokestatic#6//Methodjava/lang/Math.sqrt:(D)D
20:d2i
21:ireturn
原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容