JVM -- 原理和基本构成

JVM – 原理和基本构成

1.原理
JVM是Java程序运行的环境,但是它同时也是一个操作系统的一个应用程序的一个进程,因此JVM也有他自己的运行生命周期,也有自己的代码和数据空间。
Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码运行进行,因此在运行时,Java源程序需要通过编译器编译成.class文件。众所周知java.exe是java class文件的执行程序,但实际上java.exe程序只是一个执行的外壳,它会装载jvm.dll(windows下,皆以windows平台为例,linx下和solaris下其实类似,为:libjvm.so),这个动态链接库才是java虚拟机的实际操作处理所在。
JVM内存区域划分
粗略分来,JVM的内部体系结构分为三部分,分别是:类装载器(ClassLoader)子系统,运行时数据区和执行引擎。
类装载器
每一个Java虚拟机都有一个类加载器子系统(class loader subsystem),复制加载程序中的类型(类和接口),并赋予唯一的名字,每一个Java虚拟机都有一个执行引擎(executionengine)负责执行被夹在类中包含的指令,JVM的两种类加载器包括:启动类装载器和用户自定义装载器,启动类装载气是JVM实现的一部分,用户自定义装载器则是Java程序的一部分,必须是ClassLoader类的子类。
执行引擎:它或者在执行字节码,或者执行本地方法
主要的执行技术有:解释,即时编译,自适应优化,芯片级直接执行其中解释属于第一代JVM,即时编译JIT属于第二代JVM,自适应优化(目前Sun的HostpotJVm采用这种技术)则吸取第一代JVM和第二代JVM的经验,采用两者结合的方式。
自适应优化:开始对所有代码都采取解释执行的方式,并检视代码执行情况,然后对那些经常调用的方法启动一个后台线程,将其编译为本地代码,并进行仔细优化,若方法不在频繁使用,则取消编译过的代码,仍对其进行解释执行,
运行时数据区包括:方法区,堆,栈,Java栈,PC寄存器,本地方法栈。

2.有哪些工作机制?
(1) 类装在子系统:装在具有适合名称的类或接口
(2)执行引擎:负责执行包含在一桩在的类或接口中的指令

3.每个JVM包含:方法区,Java堆,Java栈,本地方法栈,指令计数器及其他隐含寄存器。

4.JVM工作流程如下图:
在这里插入图片描述

发布了17 篇原创文章 · 获赞 11 · 访问量 3034

猜你喜欢

转载自blog.csdn.net/qq_39306992/article/details/89096954