在正式讲解执行的方式前,我们先对字节码有一个简单的了解。平时在使用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
暂无评论内容