JVM基础

首先我们需要清楚JDK/JRE/JVM的关系和各自的用途。

JDK全称是Java Development Kit,是Java开发工具包,其中包括jjavac编译器,heap以及jconsole等监控工具;

JRE全称是Java Runtime Enviroment 是Java运行环境,其中提供了Class Library核心类库和JVM虚拟机;

JVM全称是Java Virtual Machine,是Java虚拟机,用来运行编译好的Java可运行程序。

Java的执行过程

编译:通过javac指令,使用JDK编译器,将.java文件编译成可执行的.class文件

执行:通过java指令,用Jvm虚拟机,执行.class文件。

Java为什么可以实现跨平台?

总体来说是分为两个原因:

第一,Java对于不同的平台,相同的源代码编译出来的字节码是一致的,所以字节码在各大平台是通用的;

第二,对于不同的平台,有不同的JVM版本,在执行字节码时,不同版本的JVM可以将字节码转成自己平台的机器指令;

由此,Java实现了跨平台。

JDK静态编译器

Java通过JDK提供的静态编译器,将源代码转成字节码:
词法分析:通过空格分隔出代码中的单词,操作符,控制符等信息,将其转换成Token交给语法分析;

语法分析:将Tiken流信息按照Java语法规则转成一棵语法树;

语义分析:对语法树进行关键词使用、类型匹配、作用域等语义检查;

字节码:完成语义检查后,生成字节码文件。

JVM的执行方式

JVM是以解释+编译方式执行的,会将字节码文件转换成机器指令交给CPU执行。

为了提高效率,JVM会在运行的同时进行热点统计,统计一些较高使用频率的方法调用、循环、公共模块等等,JVM会基于JIT即时编译器将这些模块转成机器码直接交给CPU执行,提高效率。

JVM解释器:程序执行时JVM解释器首先发挥作用,省去了编译器的编译时间,提高效率;

JIT即时编译器:随着执行时间推移,即时编译器开始发挥作用,将热点代码编译成本地代码,由CPU直接运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值