JVM之内存模型与类加载执行机制

废话不多说,直接上干货! --关山云影

JVM俗称java虚拟机,是java能够实现跨平台的关键。
JVM五大模块
1>类装载子系统
2>运行时数据区
3>字节码执行引擎
4>本地方法接口
5>垃圾回收模块
下面是一个类从加载到执行完成的流程图:
一个类在这里插入图片描述
一个类被java 编译器编译乘.class文件,通过类装载子系统load进运行时数据区,由字节码执行引擎去负责执行这个类:
1、首先在栈(又称java虚拟机栈)中开辟一块空间,用来存放线程执行时的临时数据。
2、每个方法执行时jvm 都会创建一个栈帧,这个栈帧就时用来临时存放线程所需要的局部变量表、操作数栈、动态连接、方法出口。栈帧就在1中开辟的空间中,如果一个类中存在多个线程,那么,就会临时创建相同数目的栈帧。
3、局部变量表用来存放方法中涉及到的局部变量,操作数栈时一个用来计算的临时数据存储区(比如int a = 1; int b = 2; int c = a+b 结合jvm 指令手册,1、2、a+b 都会被先装载到操作数栈,然后根据先进后出的原则弹出来计算,然后将结果赋值给相应的局部变量)。
4、创建对象时在堆中存储该对象的具体信息,并将其地址的引用赋值给栈中的代表该对象的变量。
5、jvm按照编译的字节码文件一步步执行,该创建对象就创建对象,该调用方法就调用方法,该计算就计算,动态链接其实就是存储了要调用的方法的一个直接引用。
6、方法被执行完成之后,都会返回一个方法被调用的位置,程序才能继续执行。方法返回时可能需要在当前栈帧中保存一些信息,用来帮助它恢复上层方法执行的状态

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值