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

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

主要组成部分分为四部分

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

其作用分别是:

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

补充:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值