数据进入运行时数据区的步骤

数据进入运行时数据区的步骤

示例代码如下:

image.png

步骤说明:

1. JVM向内存申请空间

JVM第一步就是通过参数配置或者默认配置参数向操作系统申请内存空间,根据空间大小找到具体的内存分配表,然后把内存段的起始地址和终止地址分配给JVM,接下来JVM再进行内部分配。

2. 初始化运行时数据区(分配内存)

JVM获取内存空间后,会根据配置参数分配堆,栈以及方法区的内存大小

3. 类加载

细节后续内容细讲,这里主要是把class放入方法区,还有class中的静态变量,常量也要放入方法区。

4. 执行方法并创建对象

启动main线程,执行main方法。此时堆内存中会生成一个Teacher对象,对象引用t1就存放在栈中。第二个对象也会在堆中生成,引用也继续在栈中生成。

图解

image.png

总结

总结:JVM在操作系统上申请内存,先进行运行时数据区的初始化,然后把类加载到方法区域,最后执行方法。方法的执行和退出过程在内存上的体现就是虚拟机栈中栈帧的入栈和出栈。

当然,JVM的内存分布也可以由上图,理解为像是在做一个拼图游戏。把数据进行分类再分布到不同的区域中。

同时在方法的执行过程中创建的对象一般情况下都是存放在堆中,最后堆中的对象也是需要进行垃圾回收清理的。(为什么说一般在堆中,因为有逃逸分析优化,可以直接在栈中分配对象)。

猜你喜欢

转载自blog.csdn.net/weixin_47184173/article/details/109566754