您现在的位置是:课程教程文章
Java字节码执行的两种方式
2023-12-14 22:22课程教程文章 人已围观
-
ThinkPHP5有/无路由两种状态架构流程源码分
ThinkPHP5有/无路由两种状态架构流程源码分本系列课程现在促销三天大甩卖价格,欢迎大家一起探讨分享ThinkPHP5技术.想获得... -
软件测试
软件测试一、授课方式\计划安排--Dotest软件测试学堂 1:授课方式:围绕实际公司项目(... -
工程总承包的两种类型——EPC和DB(53分钟
工程总承包的两种类型——EPC和DB(53分钟工程总承包的两种类型——EPC和DB —— shi shuo law —— 课程时间:53分钟 难度等... -
Oracle集群(RAC)时间同步的2种方式
Oracle集群(RAC)时间同步的2种方式Oracle集群(RAC)时间同步(ntp和CTSS)...
在正式讲解执行的方式前,我们先对字节码有一个简单的了解。平时在使用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字节码执行的两种方式上一篇:PHP中array_chunk() 函数如何分割数组
下一篇:没有了