JVM(内存结构概述)
1、概念:虚拟机(Virtual Machine),就是一台虚拟的计算机。它是一款软件,用来执行一 系 列虚拟计算机指令。大体上虚拟机可以分为系统虚拟机和程序虚拟。系统虚拟机(Visual Box, VMware),他们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。程序虚拟机(java虚拟机),它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令称之为java字节码指
1、虚拟机(Virtual Machine)概念:
就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。
大体上虚拟机可以分为系统虚拟机和程序虚拟。
系统虚拟机(Visual Box, VMware),他们完全是对物理计算机的仿真,提供了
一个可运行完整操作系统的软件平台。
程序虚拟机(java虚拟机),它专门为执行单个计算机程序而设计,在java虚拟
机中执行的指令称之为java字节码指令。(JVM层)
无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的
资源中
2、java虚拟机概念:
是一台执行java字节码的虚拟机,它拥有独立的运行机制其运行的java字节码
也必须有java语言编译而成。jvm包含一套字节码指令集,一组寄存器,一个栈,
一个垃圾回收堆和一个存储方法域。
JVM平台的各种语言可以共享java虚拟机带来的跨平台性、优秀的垃圾货收器,
以及可靠的及时编译器。
3、java虚拟机的作用:
java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,
解释/编译为对应平台上的机器指令执行。每一条java指令,java虚拟机规范中都
有详细的定义,如怎么取操作数怎么处理操作数,处理结果放在哪。
特点:一次编译,到处运行。自动内存管理。自动垃圾回收功能
4、JVM运行时数据区:
JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区
域【JAVA 堆、方法区】、直接内存。
5、JVM的整体结构:
6、java代码的执行流程:
① Java 源文件—->编译器—->字节码文件
② 字节码文件—->JVM(解释器)—->机器码
每一种平台的解释器是不同的,但是实现的虚拟机是相同的,这也就是 Java 为什
么能够跨平台的原因了 ,当一个程序从开始运行,这时虚拟机就开始实例化了,
多个程序启动就会存在多个虚拟机实例。程序退出或者关闭,则虚拟机实例消亡,
多个虚拟机实例之间数据不能共享
7、指令集架构:
常见的指令集架构有两种一种是基于寄存器的指令集架构,一种是基于栈的指令集
架构。JVM采用的是后者。
1、可以执行比较,基于栈式架构不需要硬件支持,可以实现跨平台;
基于寄存器架构则完全依赖硬件,可以执行差
2、设计上比较,基于栈式架构使用零地址指令方式分配(没有地址,只
有操作数,其执行过程依赖于操作栈)避开了寄存器的分配难题,设计和实
现更简单,适用于资源受限的系统(机顶盒,打印机等嵌入式设备);而基于
寄存器架构的指令集往往使用一地址、二地址、三地址指令为主。
3、速度上比较,基于栈式架构的指令集在内存中操作;而基于寄存器架
构的指令集直接由cpu执行,速度更快。
4、指令集数量比较,完成相同的操作,基于栈式架构比基于寄存器架构
的指令集数量要多,但是指令小,编译器实现容易。
8、JVM的生命周期:
1、虚拟机的启动,
是通过引导类加载器(bootstrap class loader)创建一个初始类(initial
class)来完成,这个类是由虚拟机的具体实现指定的。
2、虚拟机的执行,
运行中的虚拟机有着一个清晰的任务:执行java程序。
程序开始执行它在运行,程序结束是它结束。
执行一个所谓的java程序时,实际上时执行一个叫做java虚拟机的进程。
3、虚拟机的退出,
程序正常执行结束。
程序在执行过程中遇到异常或错误而异常终止。
由于操作系统出现错误而导致java虚拟机进程终止。
某线程调用Runtime类或System类的exit方法,或Runtime类的halt
方法,并且java安全管理也允许这次exit或halt操作。
JNI规范描述了用JNI来加载或卸载java虚拟机时,java虚拟机的退出情况。
9、三大虚拟机:
HotSpot,服务器、桌面到移动端、嵌入式 。
JRockit,专注于服务器端应用(最快,不包含解析器)。
J9,服务器端、桌面应用、嵌入式等多用途VM。
更多推荐
所有评论(0)