JAVA-对java跨平台一些总结

java如何实现跨平台?
1.javac编译器将源码即.java文件编译成字节码文件即.class文件
2.java虚拟机即jvm解释器将.class文件解释成特定平台的 二进制目标代码
3.其中jvm解释器相当于起到了适配器的作用

什么是字节码文件?
1.javac编译器经过词法分析、语法分析到抽象语法树,再遍历语法树生成线性的字节码指令文件
2.本身是二进制文件,与平台无关
3.不能被系统直接执行,需要虚拟机解释器解释执行

jvm如何进行解释执行?
1.首先由jvm类加载器加载.class文件
2.jvm解释器逐行解释执行,注意这种解释执行的速度很慢

jvm如何提高对字节码文件的执行效率?
1.OracleJdk HotSpot引入JIT(Just In Time)即时编译器,对于调用频率高的代码,编译成与平台相关的机器码,下次执行时,直接执行机器码

什么是HotSpot即时编译器?
1.HotSpot虚拟机内置了两个即时编译器,Client Compiler(又称C1)/Server Compiler(又称C2)
2.HotSpot默认采用解释器和一个即时编译器配合的工作模式,用户可以用-client/-server指定编译器,如果没指定,HotSpot会根据自身版本和服务器性能进行自行选择

JIT编译的热点代码有几类?
1.被多次调用的方法
2.被多次执行的循环体

HotSpot有哪些工作模式?
1.解释模式(Interpreted Mode):在此模式下,全部代码解释执行,指定参数 -Xint
2.编译模式(Compiled Mode):在此模式下,全部代码编译执行,指定参数 -Xcomp
3.混合模式(Mixed Mode):在此模式下,采用解释器和一个即时编译器执行,但是在最新的jdk中使用的是分层编译,混合模式是HotSpot的默认工作模式

什么是分层编译?
1.分层编译,C1编译和C2编译会协同工作
2.C1编译获取更高的编译速度,C2编译获取更好的执行性能

为什么要进行分层编译?
1.为了在程序启动响应时间与运行效率之间达到最佳平衡
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值