JVM内存模型(一)

 一、类加载模型

运行内存

1.堆用来创建对象和数组, 线程共享。

2.栈是针对的每个线程,栈帧:是每个方法。

二、栈

一、栈枕中的局部变量表&操作数栈

通过javap -c 命令编译对应的汇编语言

 解读commpute()

0. 将int类型的常量1 压入操作数栈

1.将操作数1存入局部变量a中。

2.同理2也一样。

3.iload_1 从局部变量1中装载int类型,到操作数栈中

4.iadd执行int类型的加法。遇到iadd指针从操作数栈中,弹出栈顶,操作数1和2,然后做类加,并且压入操作数栈

5.bipush 10 将操作数10压入操作数栈中。

6.imul操作和iadd操作一样。

7.istore_3 将int类型的值存入局部变量3中。

8.iload_3 将3的值拿出来放到操作数栈中。

9.ireturn 返回退出栈帧。

二、动态链接

将符号转变为具体对应的代码(方法区)地址,放到我们动态链接里面。例如:compute() 这个括号解析的时候,直接对应具体的地址。 

三、方法出口

方法结束返回到我们的出口处。

三、方法区

jdk1.8之后,叫元空间,存放常量、静态变量、类的基本信息。

四、堆

1.当new对象的时候,首先向eden区域申请空间,如果eden申请不到那么就会gc,gc是根据可达性算法,从栈的本地变量,静态变量、本地方法栈中的向下找,只要有引用的,都会拷贝到s0区域。剩余在eden区域的都会保留着。

可达性算法 

Gc Roots根节点:线程栈的本地变量、静态变量、本地方法栈的变量等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值