一步一步深入jvm(1)—jvm是什么及组成

本文详细介绍了Java虚拟机(JVM)的概念及其组成部分,包括类装载器子系统、执行引擎子系统、运行时数据区域组件和本地接口组件。同时阐述了类装载器的工作原理及其在Java程序运行中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java是半编译半解释语言
编译与解释是两个过程,编译是在编译器中,而解释在jvm中。

从图中java先由源文件(java文件)编译生成相应的字节码文件(class文件)。
调用时jvm装载相应的字节码文件,并通过字节码解释器解释为相应的机器指令,由操作系统执行生成相应的机器指令。
看到这里那jvm到底是什么,由什么构成。
什么是jvm。
      jvm全称为Java Virtual Machine中文为Java虚拟机,是Java语言的运行环境,是运行所有Java程序的抽象计算机。它是在实际的计算机上抽象出来的计算机,拥有自己完善的硬件构建(处理器、堆栈、寄存器等),同时也具有相应的指令系统。
     知道了jvm是什么,那jvm是怎么构成的,其实前面已经提到了,它具有处理器,堆栈,寄存器,及指令系统。其实对于实际jvm来说,各个厂家实现的方式具有一定的差异性(IBM与SUN在JVM实现就具有差异性),但都遵守jvm规范。现有的jvm体系结构如下。

 

英文说明

英文

               

中文                         

从图中可以看出jvm包括两个子系统和两个组件:Class loader(类装载器) 子系统,Execution engine(执行引擎) 子系统;Runtime data area (运行时数据区域)组件, Native interface(本地接口)组件。

1:Class loader(类装载器) 子系统
   Class loader(类装载器)作用是根据指定的包名、类名装载相应的class文件到内存即jvm中的Runtime data area (运行时数据区域)的Method Area(方法区)。整个过程中装载器只负责负责文件结构格式能被装载,并不负责能不能运行。

     在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:

      装载:查找和导入类或接口的二进制数据;
      链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
      校验:检查导入类或接口的二进制数据的正确性;
      准备:给类的静态变量分配并初始化存储空间;
      解析:将符号引用转成直接引用;
      初始化:激活类的静态变量的初始化Java代码和静态Java代码块。

2:Execution engine(执行引擎) 子系统
   Execution engine(执行引擎)又称为解释器,将classes文件的指令解析成机器指令代码,并提交给操作系统执行。
3:Runtime data area (运行时数据区域)
   Runtime data area (运行时数据区域)的核心,也称JVM中的内存,JVM运行程序时使用。详情见后续的文章。
4: Native interface(本地接口)
   与native libraries交互,是与其他编程语言交互的接口,主要为C与C++之间的交互。

这里只是简单的介绍了jvm是什么及jvm的组成。
很多的内容来自于网上。

后续将讲述四部分类容!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值