JVM 的主要组成部分及其作用

本文详细阐述了JVM的四个关键部分:类加载器子系统负责加载.class文件;运行时数据区包括方法区、堆、虚拟机栈和本地方法栈,管理内存;执行引擎负责字节码的解释和编译;本地方法接口允许调用非Java语言的函数。

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

JVM 的主要组成部分及其作用

主要组成部分分为四部分

  • 类加载器子系统
  • 运行时数据区
  • 执行引擎
  • 本地方法接口

其作用分别是:

  • 类加载器子系统:负责把.class字节码文件加载到内存中,至于是否能运行,无法判断,交由执行引擎判断
  • 运行时数据区:是JVM在运行时对该Java进程占用的内存进行的一种逻辑上的划分,包括方法区、堆、虚拟机栈、本地方法栈、程序计数器
  • 执行引擎:如果想要让一个Java程序运行起来,执行引擎(Execution Engine)的任务就是将字节码指令解释/编译为对应平台上的本地机器指令.才可以。所以,简单点说,JVM中的执行引擎充当了将高级语言翻译为机器语言的角色。
  • 本地方法接口:本地方法是用native修饰的方法,这个方法是用来调用不是java实现的方法,所以它 的作用就是可以调用不同的语言,来扩充java的功能

补充:

  • 方法区:存储已被虚拟机加载的类型信息、常量(运行时常量池)、静态变量、即时编译器编译后的代码缓存等。
  • 虚拟机栈:一个数组实现的栈结构,里面保存着很多个栈帧,对应java代码里的一次次的方法调用,这个也是线程私有的。生命周期和线程相同。
  • 本地方法栈:本地方法栈用于管理本地方法的调用,Hotspot JVM中,直接将本地方法栈和虚拟机栈合二为一。
  • 程序计数器:因为java为了提高程序的处理效率,实现了多线程的机制,这就导致了可能会出现并发的问题,程序计数器作为运行时数据区的一部分,如果多个线程同时执行一个方法的话,因为线程是在微观上是串行的,所以可能出现一个线程在运行时中断,进入阻塞状态,另一个线程来执行这个方法,会出现线程安全的问题,所以,程序计数器被设计成线程私有,而且,当线程中断的时候,会记录下一条待执行的指令地址,等到线程恢复的时候,执行引擎能通过读取程序计数器记录的指令地址,继续执行代码。总结:PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值