复习整理的DAY21_JVM

JVM(Java Virtual Machine)即java虚拟机,是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成,其他的程序语言只要能符合JVM规范那么就可以在虚拟机上运行。

JVM主要分为五大模块:类装载器子系统、运行时数据区、执行引擎、本地方法接口和垃圾收集模块。 

JVM特点:①一次编译,到处运行。②自动内存管理。③自动垃圾回收功能。

JVM作用:负责装载字节码到内部,解释编译为对应平台上的机器指令执行。每一条Java指令,Java虚拟机规范中都有详细定义。

JVM位置:

接下来,主要以HotSpot VM作为例子介绍JVM:

HotSpot是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。

它采用解释器与即时编译器并存的架构。

什么是解释器:是一种能够把高级编程语言一行一行直接转译运行的程序。

什么是即时编译器:是一个把Java的字节码转换成可以直接发送给处理器的指令的程序。

整体结构:

Java编译器输出的指令流,基本上是一种基于栈的指令集架构,它们依赖操作数栈进行工作,与之相对的另外一套常用的指令集架构是基于寄存器的指令集。

基于栈的指令集架构特点:

(1)设计和实现更简单,适用于资源受限的系统

(2)避开了寄存器分配难题,使用零地址指令分配

(3)指令流中指令大部分是零地址指令,其执行过程依赖于操作栈

(4)指令集更小,编译器容易实现

(5)不需要硬件支持,跨平台性好,可移植性好

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

(1)指令集架构完全依赖于硬件,可移植性差

(2)性能优秀,执行效率高

(3)在大部分的情况下,该指令集往往以一地址指令、二地址指令和三地址指令为主

总结:虽然基于寄存器的指令集架构性能优秀,执行效率高,但考虑到其跨平台性与可移植性差,我们还是选用基于栈的指令集架构。

JVM生命周期:

启动:通过引导类加载器创建一个初始类启动Java虚拟机。

执行:执行Java程序。

退出:

(1)程序正常执行结束

(2)程序发发生了异常或错误而终止

(3)操作系统出现错误而终止

(4)通过调用exit()或halt()方法退出

(5)JNI规范描述了用JNI Invocation API来加载或卸载 Java虚拟机时,Java虚拟机的退出情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值