JVM 体系结构

15 篇文章 0 订阅

JVM: 跨平台语言

需要不同语言由自己编译器,生成符合 JSR-292 JVM规范的字节码文件,即可在 Java 虚拟机中运行

 多语言混合编程:

  • Java 平台上的多语言混合编程正成为主流,通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向
  • 每个应用层都将使用不同的编程语言来完成,而且,接口对每一层的开发者都是透明的,各种语言之间的交互不存在任何困难,就像使用自己语言的原生API一样方便,因为他们最终都运行在一个虚拟机之上

虚拟机:

  • 就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。可分为系统虚拟机和程序虚拟机
  • Visual Box、VMware 属于系统虚拟机,他们完全是对物理计算机的仿真,提供了一个可以运行完整操作系统的软件平台
  • Java 虚拟机属于程序虚拟机,专门为执行单个计算机程序而设计,在 Java 虚拟机中执行的指令我们称为 Java 字节码指令
  • 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中

JAVA 虚拟机

  • Java 虚拟机是一台执行 Java 字节码的虚拟计算机,它拥有独立的运行机制,其运行的 Java 字节码也威逼又 Java 语言编译而成
  • JVM 平台的各种语言可以共享 Java 虚拟机带来的跨平台性、优秀的垃圾回收期,以及可靠的即时编译器
  • Java 技术的核心就是 Java 虚拟机(JVM, Java Virtural Machine) 因为所有的 Java 程序都运行在 Java 虚拟机内部

作用:

Java 虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条 Java 指令,Java 虚拟机规范中都有详细定义。

特点:

  • 一次编译,到处运行
  • 自动内存管理
  • 自动垃圾回收功能

位置:

  • JVM 是运行在操作系统之上的,它与硬件没有直接的交互

整体结构:

  • HotSpot VM 是目前市面上高性能虚拟机的代表作之一
  • 它采用解释器与即时编译器并存的架构
  • Java 程序的运行性能早已脱胎换骨,已经达到了可以和 C/C++ 程序一较高下的地步

Java 代码执行流程:

JVM 的架构模型:

  • Java 编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构
  • 由于跨平台性的设计,Java 的指令都是根据栈来设计的。不同平台 cpu 架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。

基于栈式架构的特点:

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

基于寄存器架构的特点:

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

生命周期-启动:

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

生命周期-执行:

  • 一个运行中的 Java 虚拟机有着一个清晰的任务: 执行 Java 程序
  • 程序开始执行时他才运行,程序结束时他就停止
  • 执行一个所谓的 Java 程序的时候,真真正正的执行的是一个叫做 Java 虚拟机的进程

生命周期-退出:

  • 程序正常执行结束
  • 程序在执行过程中遇到了异常或错误而异常终止
  • 由于操作系统出现错误而导致 Java 虚拟机进程终止
  • 某线程调用 Runtime 类或 System 类的 exit 方法,或 Runtime 类的 halt 方法,并且 Java 安全管理器也允许这次 exit 或 halt 操作。
  • JNI(Java Native Interface) 规范描述了用 JNI Invocation API 来加载或卸载 Java 虚拟机时, Java 虚拟机退出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值