Java虚拟机的结构梳理

在这里插入图片描述
可以归纳为如下四个部分:

  • 类加载器(Class Loader)把描述类的数据从 Class 文件加载到内存,除了启动类加载器是 Java 虚拟机的一部分以外,其他的类加载器是被放到 Java 虚拟机外部去实现的,以便让应用程序自己决定如何去获取所需要的类。
  • 运行时数据区域(Runtime Data Area):Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。运行时数据区域主要有 Java 虚拟机栈(VM Stack)、本地方法栈(Native Method Stack)、程序计数器(Program Counter Register)、堆(Heap)、方法区(Method Area)这五个部分,其中前三个是线程私有的,后两个是线程共享的。
  • 执行引擎(Execution Engine):执行引擎是 Java 虚拟机最核心的组成部分之一。“虚拟机” 是一个相对于 “物理机” 的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。我们可以把执行引擎就理解为 Java 语言的解释器,负责将字节码解析成机器码。
  • 本地方法接口(Native Interface):融合不同开发语言的原生库为 Java 所用。本着不重复造轮子的原则,如果其它语言已经实现好了,就不用再写一遍相同的东西了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值