jvm学习笔记--jvm简介
1、JVM在计算机系统所处的位置
jvm是运行在操作系统之上的,并没有和硬件有直接的交互
2、java及jvm
Java跨平台语言:一次编译,到处运行;java技术的核心就是jvm。
jvm跨语言的平台:只要不同的编程语言的编译器生成的字节码文件遵循jvm规范,就可以在jvm中运行
3、jvm简介
虚拟机就是一台虚拟的计算机,它是一款软件,用来执行一系列虚拟计算机指令,大体上可分为系统虚拟机和程序虚拟机;
VMware 就是属于系统虚拟机,它是完全对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台;
java虚拟机就属于程序虚拟机,它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令称java字节码指令。
作用:jvm就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。
特点:
- 一次编译,到处执行
- 自动内存管理
- 自动垃圾回收功能
架构模型:由于跨平台的设计,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)概览图
(2)详图英文
(3)详图中文
5、java代码的执行流程
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虚拟机的退出情况