一、JVM 与 Java 体系结构

【目录】 【下一篇:类的加载过程】

一、JVM 与 Java 体系结构

1、JVM 的位置

JVM 是运行在操作系统之上的,它与硬件没有直接的交互
在这里插入图片描述

2、JVM 的整体结构

在这里插入图片描述

3、Java 代码执行流程

在这里插入图片描述

4、JVM 的架构模型

Java 编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构

两者区别

基于栈的指令集架构:

  • 设计和实现更简单,适用于资源受限的系统;
  • 避开了寄存器的分配难题,使用零地址指令方式分配;
  • 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译更容易实现;
  • 不需要硬件支持,可移植性好,更好实现跨平台。

基于寄存器的指令集架构:

  • 典型的应用就是 x86 的二进制指令集;比如传统的 PC 以及 Android 的 Davlik 虚拟机;
  • 指令集架构则完全依赖硬件,可移植性差;
  • 性能优秀和执行更高效;
  • 花费更少的指令去完成一项操作;
  • 在大部分情况下,基于寄存器架构的指令集往往都以一地指令、二地址指令和三地址指令为主。

零地址指令:
零地址指令是机器指令的一种,是指令系统中的一种不设地址字段的指令,只有操作码,没有操作数。这种指令有两种情况:一是无需操作数,另一种是操作数为默认的(隐含的),默认为操作数在寄存器中,指令可直接访问寄存器。

5、JVM 的生命周期

1、 启动:

Java 虚拟机的启动是通过引导类加载器(Bootstrap ClassLoader)创建一个初始类(initial class)来完成启动的,这个类由虚拟机的具体实现指定。

2、执行:

  • 一个运行中的 Java 虚拟机有着一个明确的任务:执行 Java 程序;
  • 程序开始执行时它才运行,程序结束时它就停止;
  • 执行一个所谓的 Java 程序时,真正执行的是一个 Java 虚拟机的进程。

3、退出:

  • 程序正常执行结束;
  • 程序在执行过程中遇到了异常或错误而导致虚拟机进程非正常停止;
  • 操作系统出现错误导致虚拟机进程非正常停止;
  • 某线程调用 Runtime 类或 System 类的 exit() 方法,或者 Runtime 类的 halt() 方法,并且 Java 安全管理器也运行这次 exit 或 halt 的操作。

【目录】【下一篇:类的加载过程】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值