Java代码是怎么运行的?

一、运行方式
java有很多种运行方式,比如很常见的在开发的中使用开发工具运行或者通过命令行的方式运行,甚至也可以通过双击jar和在网页中运行,当然整个运行过程中离不开jre也就是java运行环境。

实际上,JRE 仅包含运行 Java 程序的必需组件,包括Java 虚拟机以及 Java 核心类库等。

二、虚拟机
对于java跨平台的特性实际上就是jvm的功劳了,他在硬件和代码中间做到了转换,我们开发的时候不需要关心程序会在内个硬件上运行交给jvm,他会帮你搞定的!

但是这个转换具体怎么做呢?首先编译器将我们开发的java程序转换成jvm可以识别的字节码再由jvm转换成硬件可以执行的机器码去执行。

虚拟机如何去运行java字节码
1.从虚拟机的角度:
执行java代码首先需要将他编译成class文件并加载到虚拟机中,加载后的java类会存在方法区中。实际运行中,虚拟机会执行方法区的代码,对于运行中的数据存储,虚拟机划分出了堆、栈进行保存。
对于栈又细分出了java方法栈和本地方发栈以及存放各个线程执行位置的pc寄存器。

在这里插入图片描述
2.从硬件的角度:
从硬件的角度来讲,java字节码是无法执行的,所以虚拟机需要把字节码翻译成机器码。
常见的翻译形式有两种,第一种是解释执行,意思是逐条将字节码翻译成机器码;第二种是即时编译,意思是将一个方法中的所有字节码全部翻译完再执行。

在这里插入图片描述
解释执行 执行时才翻译成机器指令,无需保存不占内存。但即时编译类似预编译,编译之后的指令需要保存在内存中,这种方式吃内存,按照二八原则这种混合模式最恰当的,热点代码编译之后放入内存避免重复编译,而其他运行次数较少代码则解释执行,避免占用过多内存,HotSpot默认采用混合模式,综合了二者的有点,首先使用解释执行,对于一些反复执行的热点代码,以方法为单位进行即时编译。

三、使用虚拟机的优势
1:可以轻松实现Java代码的跨平台执行
2:JVM提供了一个托管平台,提供内存管理、垃圾回收、编译时动态校验等功能
3:使用JVM能够让我们的编程工作更轻松、高效节省公司成本,提示社会化的整体快发效率,我们只关注和业务相关的程序逻辑的编写,其他业务无关但对于编程同样重要的事情交给JVM来处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值