JVM概述

JVM概述

1.何为JVM

​ JVM是Java虚拟机,是用来执行Java字节码文件的虚拟计算机

​ JVM是运行在操作系统之上,它不与硬件直接交互

2.JVM跨平台及原理

在这里插入图片描述

​ 跨平台:由Java编写的程序可以在不同的操作系统上运行:一处编译,多处运行

​ 原理:字节码文件是在JVM上运行的,而JVM运行在操作系统之上

3.JVM的分类

​ 类加载子系统

​ 运行时数据区

​ 执行引擎(一般都是JIT编译器和解释器共存)

​ JIT编译器(主要影响性能):编译执行;一般热点数据会进行二次编译,将字节码指令编译成机器指令。并将机器指令放在方法区缓存

​ 解释器(负责响应时间,响应时间一般都很快):逐行解释字节码。

4.JVM的位置

​ JVM位于操作系统之上,应用程序之下

5.JVM的体系结构

在这里插入图片描述

​ 入口是编译好的字节码文件(编译器前端)——> 经过类加载子系统(将字节码文件加载到内存当中,生成一个Class对象,中间经过三步:加载——> 链接——> 初始化)

​ 在内存中,方法区是多个对象共享的(多个线程共享的)

每一个线程独占一个Java虚拟机栈本地方法栈程序计数器

​ 执行引擎:由解释器(解释运行),JIT即时编译器(编译器后端)和垃圾回收器三部分组成

6.Java代码执行流程

在这里插入图片描述

在这里插入图片描述

​ 高级语言编译为机器指令,主要是有执行引擎完成的

​ JIT即时编译器(编译器后端,主要是把热点代码缓存起来,负责编译器的性能)

7.JVM的框架模型

Java编译器输入的指令流基本上是基于的指令集架构,另一种指令集架构是基于寄存器的指令集架构,两种架构之间的区别如下:

基于栈实现的指令集特点如下:

​ 设计和实现更加简单,适用于资源受限的系统。

​ 避开了寄存器额分配难题,使用零地址指令分配方式。

​ 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈,指令集更小,编译器更加容易实现。

​ 不需要硬件支持,可移植性好,更好实现跨平台。

​ 基于栈的指令集:跨平台性,指令集小,指令多执行性能比寄存器差。

基于寄存器指令集的特点:

​ 典型的应用是x86二进制指令集,比如传统的pc以及android的davlik虚拟机。

​ 指令集架构完全依赖于硬件,可移植性差。

​ 性能优秀和执行更加高效。

​ 花费更少的指令去完成一项任务。

​ 在大部分情况下,基于寄存器的指令集往往都以一地址指令,二地址指令,三地址指令为主,而基于栈结构的指令集则以零地址为主。

小结:
由于扩平台式的设计,Java的指令集都是根据栈来设计的,不同的平台cpu架构不同,所以不能设计为基于寄存器的,优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值