jvm学习笔记--jvm简介

1、JVM在计算机系统所处的位置

 jvm是运行在操作系统之上的,并没有和硬件有直接的交互

jvm学习笔记--jvm简介_第1张图片

2、java及jvm

Java跨平台语言:一次编译,到处运行;java技术的核心就是jvm。

jvm学习笔记--jvm简介_第2张图片

jvm跨语言的平台:只要不同的编程语言的编译器生成的字节码文件遵循jvm规范,就可以在jvm中运行

jvm学习笔记--jvm简介_第3张图片

3、jvm简介

虚拟机就是一台虚拟的计算机,它是一款软件,用来执行一系列虚拟计算机指令,大体上可分为系统虚拟机和程序虚拟机;

VMware 就是属于系统虚拟机,它是完全对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台;

java虚拟机就属于程序虚拟机,它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令称java字节码指令。

作用:jvm就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。

特点:

  1. 一次编译,到处执行
  2. 自动内存管理
  3. 自动垃圾回收功能

架构模型:由于跨平台的设计,java的指令是根据栈来设计的,栈:跨平台、指令集小、指令多;性能比寄存器差。所以jvm是栈的指令集架构(另外一种是基于寄存器的指令集架构)。

发展:三大主流虚拟机HotSpot VM、BEA JRockit和IBM J9

  • SUN Classic VM:第一款商用的虚拟机,内部只提供解释器(响应快,性能差,逐行执行);
  • Exact VM:解释器和编译器(相应慢,性能高,把高频的代码及时的编译成本地的指令缓存起来)混合工作;
  • HotSpot VM :HotSpot指热点代码探测技术,解释器和编译器协同工作,java默认的虚拟机;服务器端、桌面到移动端、嵌入式都有应用;
  • BEA JRockit:(BEA 已被Oracle收购) 专注于服务端应用,世界最快的jvm之一
  • IBM J9:服务器端、桌面应用、嵌入式等多用途VM;
  • Taobao JVM: 目前已经在淘宝、天猫上线,替换了Oracle官方JVM;
  • Dalvik VM:Android虚拟机 DVM,只能称作虚拟机 不能称为java虚拟机,他没有遵循Java虚拟机规范基于寄存器架构,效率高,但是跟硬件耦合度比较高,不能直接执行class文件,执行的是dex文件
  • Graal VM: Oracle 2018年4月公开,口号 Run Programs Faster Anywhere.最可能替代HotSpot的产品,在HotSpot虚拟机基础之上增强而成的跨语言全栈虚拟机,可以作为“任何语言”的运行平台使用。

4、jvm内存结构

(1)概览图

jvm学习笔记--jvm简介_第4张图片

(2)详图英文

jvm学习笔记--jvm简介_第5张图片

(3)详图中文

jvm学习笔记--jvm简介_第6张图片

5、java代码的执行流程

jvm学习笔记--jvm简介_第7张图片

jvm学习笔记--jvm简介_第8张图片

 

6、jvm生命周期

(1)启动

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

(2)执行

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

(3)退出

  • 程序正常执行结束
  • 程序异常或错误而异常终止
  • 操作系统错误导致终止
  • 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且java安全管理器也允许这次exit或halt操作
  • 除此之外,JNI规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,Java虚拟机的退出情况

你可能感兴趣的:(jvm学习笔记,jvm)