画图学 JVM(三) 01 JVM 与 Java 体系结构

目录

  • 一、Java 基础知识
    • 1. Java 技术体系
    • 2. Java 发展史
    • 3. Java 开发层级
    • 4. 跨平台和跨语言
    • 5. Java 语言
      • 5.1 Java 语言是高级语言
      • 5.2 Java 语言的执行流程
  • 二、JVM 概览
    • 1. JVM 所处位置
    • 2. JVM 作用和特点
      • 2.1 作用
      • 2.2 特点
    • 3. JVM 整体结构
    • 4. JVM 的架构模型
    • 5. JVM 的生命周期
      • 虚拟机启动
      • 虚拟机的执行
      • 虚拟机退出
    • 6. 主流 JVM
      • 6.1 Sun Classic VM
      • 6.2 Exact VM
      • 6.3 HotSpot VM
      • 6.4 BEA JRockit VM
      • 6.5 IBM J9 VM
      • 6.6 Graal VM
  • 系列学习
  • 附件

正式开始学习了,看完了第一章视频, 重绘了一遍宋老师的 PPT。 真耗时间啊。。 。先用图总结下第一章,文章后面附第一章 PPT(非原版,非截屏版,学习重绘版)。

一、Java 基础知识

1. Java 技术体系

画图学 JVM(三) 01 JVM 与 Java 体系结构_第1张图片JCP: Java Community Process, 就是人们常说的“Java 社区”, 这是一个由业界多家技术巨头组成的社区组织, 用于定义和发展Java的技术规范。

2. Java 发展史

画图学 JVM(三) 01 JVM 与 Java 体系结构_第2张图片

3. Java 开发层级

画图学 JVM(三) 01 JVM 与 Java 体系结构_第3张图片

4. 跨平台和跨语言

画图学 JVM(三) 01 JVM 与 Java 体系结构_第4张图片Java 代码经过编译器编译后生成字节码文件, 字节码文件可以在Windows、Linux、Mac等多个平台的 JVM 中执行。“write once, run anywhere!”
画图学 JVM(三) 01 JVM 与 Java 体系结构_第5张图片多种语言经过各自的编译器将源程序编译成符合规范的字节码后,都可以在 Java 虚拟机上运行。

5. Java 语言

5.1 Java 语言是高级语言

画图学 JVM(三) 01 JVM 与 Java 体系结构_第6张图片Java 是一种高级语言,计算机硬件不能直接识别和执行。需要经过 JVM 解释或编译成机器指令才能运行。

5.2 Java 语言的执行流程

画图学 JVM(三) 01 JVM 与 Java 体系结构_第7张图片

二、JVM 概览

1. JVM 所处位置

画图学 JVM(三) 01 JVM 与 Java 体系结构_第8张图片JVM 依赖于机器硬件和操作系统, 它自身不是跨平台的。字节码可以在所有JVM中运行,是 Java 语言跨平台的桥梁。

2. JVM 作用和特点

2.1 作用

提供字节码运行的环境,负责装载字节码到其内部,并解释/编译为对应平台的机器指令执行。其中,字节码指令在 JVM 规范中有明确的定义,如怎么取操作数,怎么处理操作数,处理结果如何存放等。

2.2 特点

  • 一次编写,处处运行
  • 自动内存管理
  • 自动垃圾回收

3. JVM 整体结构

画图学 JVM(三) 01 JVM 与 Java 体系结构_第9张图片

4. JVM 的架构模型

画图学 JVM(三) 01 JVM 与 Java 体系结构_第10张图片

  • 由于跨平台的设计,Java 的指令都是根据栈来设计的,不同平台 CPU 架构不同,所以不能设计成基于寄存器的。
  • 优点是跨平台、指令集更小,编译容易实现; 缺点是实现相同功能需要更多指令, 性能有所下降。

5. JVM 的生命周期

画图学 JVM(三) 01 JVM 与 Java 体系结构_第11张图片

虚拟机启动

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

虚拟机的执行

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

虚拟机退出

  • 程序正常退出

  • 执行过程中遇到了异常或错误而异常终止

  • 由于操作系统异常出现错误而导致 JVM 进程终止

  • 某线程调用 Runtime 类或 System 类的 exit 方法, 或 Runtime 类的 halt 方法。 并且 Java 安全管 理器允许这次 exit 或 halt 操作。

  • JNI 规范描述了用 JNI Invocation API 来加载或卸载 JVM 时, JVM的退出情况。

6. 主流 JVM

吹水用,哈哈…

6.1 Sun Classic VM

  • 1996 年 Java 1.0 版本时发布, 世界上第一款商用 JVM,JDK 1.4 时被淘汰
  • 内部只提供解释器
  • 可外挂 JIT 编译器, 但解释器不能配合工作
  • 当前 HotSpot 内置了此 JVM

6.2 Exact VM

  • 解决Classic VM 的问题, JDK 1.2 时发布
  • Exact Memory Management: 准确式内存管理也叫 Non-Conservative / Accurate Memory Management
    • 虚拟机可以知道内存中某个位置具体是什么类型
  • 具备现代高性能 JVM 的雏形
    • 热点探测
    • 编译器与解释器混合工作模式
  • 在 Solaris 平台短暂使用后,被 HotSpot VM 替换

6.3 HotSpot VM

  • JDK 1.3 时成为 JDK 默认的虚拟机
  • 占用绝对的市场地位
  • HotSpot 指的是它的热点探测技术
  • 通过计数器找到最具编译价值的代码, 触发及时编译或栈上替换
  • 通过编译器和解释器协同工作,在最优的程序响应时间与最佳执行性能中取得平衡

6.4 BEA JRockit VM

  • 专注于服务端应用
  • 不关注程序启动速度,因此颞部不包含解释器实现, 全部代码都靠及时编译器编译后执行。
  • 最快的 JVM
  • 优势:全面的 Java 运行时解决方法组合
    • JRockit Real Time 提供毫秒或微妙级 JVM 响应时间
    • MissionControl 服务套件,以极低的开销监控、管理和分析生成环境中应用程序的工具

6.5 IBM J9 VM

  • 全称:IBM Technology for Java Virtual Machine, 简称 IT4J, 内部代号:J9
  • 多用途 VM,在 IBM 的软硬件平台性能优秀
  • 三大商用虚拟机之一(HotSpot、JRockit、J9)

6.6 Graal VM

  • Oracle 2018.4 公开
  • Run Programs Faster Anywhere
  • 跨语言全栈虚拟机,可以作为“任何语言”的运行平台
  • 工作原理是将这些语言的源代码或源代码编译后的中间格式, 通过解释器转换成能被Graal VM 接收的中间表示。Graal VM 还提供 Truffle 工具集快速构建面向一种新语言的解释器。在运行时还能进行及时编译优化, 获得比原生编译器更优秀的执行效率

系列学习

画图学JVM (一)相关资料和学习计划 《硅谷2020最新版宋红康JVM》
画图学JVM (二)章节目录
画图学JVM (三)01 JVM 与 Java 体系结构
画图学JVM (四)02 类加载子系统
画图学JVM (五) 03 运行时数据区概述和线程
画图学JVM (六) 04 程序计数器

附件

《尚硅谷2020最新版宋红康JVM》01 JVM 与 Java 体系结构 学习记录 PPT
《尚硅谷2020最新版宋红康JVM》02 类加载子系统 学习记录 PPT
《尚硅谷2020最新版宋红康JVM》03 运行时数据区概述和线程 PPT
《尚硅谷2020最新版宋红康JVM》04 程序计数器 PPT
《尚硅谷2020最新版宋红康JVM》推荐的资料和工具集.

你可能感兴趣的:(JVM)