003|Jvm 有哪些内存区域

本文详细解析了Kafka启动过程中的JVM行为,包括类加载、线程执行、方法调用栈帧的压入与出栈,以及ReplicaManager对象的创建与方法执行流程。

 

JVM 中有哪些内存区域 .png

 

整体流程的分析:

首先,你的JVM 启动,就会先加载你的 Kafka 类到内存中,然后会有一个 main 线程,开始执行的你的Kafka中的 mian() 方法,mian() 方法会关联一个程序计数器,那么它执行到哪一行指令,就会记录在这里。

然后,mian()  方法在执行的时候,会在main线程关联的 Java虚拟机栈里,压入一个 main() 方法的栈帧。

接着,就会发现需要创建一个 ReplicaMabager 类的实例对象,此时会加载 ReplicaMabager 类到内存里来。

然后会创建一个ReplicaManager的对象实例分配在Java堆内存里,并且在main()方法的栈帧里的局部变量表引入一个 “replicaManager”变量,让他引用ReplicaManager对象在Java堆内存中的地址。

接着 main 线程开始执行, ReplicaManager 对象中方法,会依次把自己执行到的方法对应的栈帧压入自己的 Java 虚拟机栈,执行完方法之后再把对应的栈帧从 Java 虚拟机栈里出栈。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值