高端网站设计欣赏,郴州网站维护,景安网站备案 不去拍照,免费建购物网站目录
虚拟机
java虚拟机
简介
特点
作用
位置
整体结构
类装载子系统
运行时数据区
java执行引擎
Java代码执行流程
jvm架构模型
基于栈式架构
基于寄存器架构
总结
jvm的生命周期
1.启动
2.执行
3.退出
JVM的发展历程 虚拟机
所谓虚拟机#xff0c;指的…目录
虚拟机
java虚拟机
简介
特点
作用
位置
整体结构
类装载子系统
运行时数据区
java执行引擎
Java代码执行流程
jvm架构模型
基于栈式架构
基于寄存器架构
总结
jvm的生命周期
1.启动
2.执行
3.退出
JVM的发展历程 虚拟机
所谓虚拟机指的是一台虚拟的计算机。它是一款软件用来执行一系列的虚拟计算机命令。虚拟机可以分为系统虚拟机和程序虚拟机。
系统虚拟机对物理计算机的仿真提供了一个可运行完整操作系统的软件平台
程序虚拟机专门为了执行单个计算机程序而设计在Java虚拟机中执行指令 java虚拟机
Java是目前最广泛的软件开发平台之一拥有完善且不断壮大的社区作为一个平台Java虚拟机扮演者举足轻重的作用 每个语言都需要转换成字节码文件最后转换的字节码文件能通过Java虚拟机进行运行和处理 简介 Java虚拟机是一台执行Java字节码的虚拟计算机它拥有独立的运行机制其运行的Java字节码也未必由Java语言编译而成 JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回器以及可靠的即时编译器 Java技术的核心就是Java虚拟机因为所有的Java程序都运行在Java虚拟机内部
特点 1.一次编译到处运行 2.自动内存管理 3.自动垃圾回收机制
作用 Java虚拟机就是二进制字节码的运行环境负责装载字节码到其内部解释/编译为对应平台上的机器指令。
位置 JVM是运行在操作系统之上的它与硬件没有直接的交互
整体结构
JVM由类装载子系统、运行时数据区、java执行引擎三部分组成三部分相辅相成共同工作,不能单纯的说只有执行完某一个部分才由下一个部分来工作,从JVM运行开始,三个类加载器就要开始创建,并且类加载器的一些信息也要放在运行时数据区 类装载子系统 .class文件通过类装载系统进行加载,验证等一系列操作,在这个过程中将需要存储到内存的数据放到运行时数据区
运行时数据区 java栈线程独享每个线程栈存放执行的方法每个方法为一个栈帧 本地方法栈线程独享类似于虚拟机栈这里调用的是native的方法 程序计数器线程独享存放每个线程中指令执行到哪一个 方法区线程独享类信息常量静态变量等 堆线程独享对象存放位置
java执行引擎
用于执行栈中指令,一条一条的指令读取,类似一个cpu,我们的虚拟机栈中操作数栈弹栈进行运算的运算就是由执行引擎进一步完成的
Java代码执行流程 1.Java代码通过编译器转化生成为字节码文件
2.字节码文件在虚拟机上进行解析
3.操作系统执行
jvm架构模型
Java编译器输入的指令流基本上是一种基于栈的指令集架构另外一种指令集架构则是基于寄存器的指令集架构
基于栈式架构 1.设计和实现更简单适用于资源受限的系统 2.避开了寄存器的分配难题使用零地址指令方式分配 3.指令流中的指令大部分是零地址指令其执行过程依赖于操作栈。 4.不需要硬件支持可移植性更好更好的实现跨平台
零地址指令是机器指令的一种是指令系统中的一种不设地址字段的指令只有操作码没有操作数。这种指令有两种情况一是无需操作数另一种是操作数为默认的隐含的默认为操作数在寄存器中指令可直接访问寄存器。
机器指令机器语言的语句称为机器指令。又将全部机器指令的集合称为机器的指令系统
基于寄存器架构 1.指令集架构则完全依赖硬件可移植性差 2.性能优秀和执行力更高效 3.花费更少的指令去完成一项操作 4.在大部分情况下基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主
总结
由于跨平台性的设计Java的指令都是根据栈来设计的。不同平台CPU架构不同所以不能设计为基于寄存器的。优点是跨平台指令集小编译器容易实现缺点是性能下降实现同样的功能需要更多的指令。
jvm的生命周期
分为启动、执行、退出三个阶段
1.启动 通过引导类加载器创建一个初始类来完成这个类是由虚拟机的具体实现指定的
2.执行 一个运行中的Java虚拟机有着一个清晰的任务执行Java程序 程序开始执行时他才运行程序结束时他就停止 执行一个所谓的Java程序的时候真真正正在执行的是一个叫做Java虚拟机的进程
3.退出
退出的情况 1.程序正常结束 2.程序在执行过程中遇到了异常或者错误而终止 3.操作系统出现错误而导致jvm进程终止 4.某线程调用 Runtime 类或System 类 的exit 方法 或 Runtime 类的 halt 方法并且 Java 安全管理器也允许这次 exit 或 half 操作 5.卸载虚拟机
JVM的发展历程
1.Sun Classic VM世界上第一款商用Java虚拟机
2.Exact VM具备现代高性能虚拟机的雏形
3.HotSpot VM目前Hotspot占有绝对的市场地位称霸武林
4.JRockit专注于服务器端应用是世界上最快的JVM
5.IBM的J9市场定位与HotSpot接近服务器端、桌面应用、嵌入式等多用途VM
6.CLDC Hotspot简单、轻量、高度可移植面向更低端的设备上还维持自己的一片市场
7.Azul VM与特定硬件平台绑定、软硬件配合的专有虚拟机
8.Liquid VM不需要操作系统的支持或者说它自己本身实现了一个专用操作系统的必要功能如线程调度、文件系统、网络支持等
9.Apache HarmonyIBM和Intel联合开发的开源JVM受到同样开源的OpenJDK的压制Sun坚决不让Harmony获得JCP认证最终于2011年退役
10.Micorsoft JVM只能在Windows平台下运行。但确是当时Windows下性能最好的Java VM
11.Taobao JVM基于OpenJDK 开发了自己的定制版本AlibabaJDK简称AJDK。是整个阿里Java体系的基石。国内第一个优化、深度定制且开源的高性能服务器版Java虚拟机
12.Dalvik VM只能称作虚拟机而不能称作“Java虚拟机”它没有遵循 Java虚拟机规范不能直接执行Java的Class文件
13.Graal VM在HotSpot VM基础上增强而成的跨语言全栈虚拟机可以作为“任何语言” 的运行平台使用
具体JVM的内存结构其实取决于其实现不同厂商的JVM或者同一厂商发布的不同版本都有可能存在一定差异。主要以Oracle HotSpot VM为默认虚拟机。