java虚拟机JVM运行原理

本文介绍了JVM的运行原理及组成,详细解释了类装载器子系统与执行引擎子系统的功能,以及运行时数据区域组件的具体作用,帮助读者深入理解JVM的工作机制。

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

JVM

 jvm:  分两个子系统:Class loader(类装载器子系统)和execution engine(执行引擎子系统)
        包括两个组件:runtime data area(运行时区域组件)和 native interface(本地接口组件)
 运行原理:
        Class loader 根据全限定类名(如:java.lang.Object)加载class文件,字节码文件。
        放到runtimedata area中的method area当中。相当于放到内存当中。
        execution engine(相当于计算机的CUP) 执行class文件中的指令。
  java 程序员可以extends java.lang.ClassLoader 来写自己的Class loader类加载器
        
两个组件:
native interface:
 本地接口组件,与本地库交互native libraries,是与其他语言交互的接口。不再受jvm的控制。所以也很容易出现 native heap outofmemory exception。

 runtimedata area 包括
(method area,存放被装载的java类对象,也就是字节码信息
heap,用来存放java实例对象
stack,用于存放每个运行的java线程的局部变量,操作数,中间结果,以及执行的上下文信息,结果集。(5.0之前的256k,之后为1M)
native method stack,保存本地方法进入区域地址
program counter register计数器。每个线程都有自己的PC寄存器,在该线程启动时创建。PC寄存器的内容总是指向下一条将被执行的指令地址,实现方式有两种,一种是PC寄存器+1,一种是方法区中相对应于该方法起始指令的偏移量(可以理解为某一个数))
以上五部分,只有heap和method area是被所有线程所共享使用的。
而java stack,program counter,native interface 是以线程为粒度,每个线程拥。有自己的部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值