003|Jvm 有哪些内存区域
整体流程的分析:
首先,你的JVM 启动,就会先加载你的 Kafka 类到内存中,然后会有一个 main 线程,开始执行的你的Kafka中的 mian() 方法,mian() 方法会关联一个程序计数器,那么它执行到哪一行指令,就会记录在这里。
然后,mian() 方法在执行的时候,会在main线程关联的 Java虚拟机栈里,压入一个 main() 方法的栈帧。
接着,就会发现需要创建一个 ReplicaMabager 类的实例对象,此时会加载 ReplicaMabager 类到内存里来。
然后会创建一个ReplicaManager的对象实例分配在Java堆内存里,并且在main()方法的栈帧里的局部变量表引入一个 “replicaManager”变量,让他引用ReplicaManager对象在Java堆内存中的地址。
接着 main 线程开始执行, ReplicaManager 对象中方法,会依次把自己执行到的方法对应的栈帧压入自己的 Java 虚拟机栈,执行完方法之后再把对应的栈帧从 Java 虚拟机栈里出栈。