JVM内存区域划分和运行时的使用情况

1. JVM对自己的内存进行了划分,分成了五个区域

a.寄存器:内存和CPU之间(系统相关)

b.本地方法栈:JVM调用了系统中的功能(系统相关)

c.方法和数据共享区:运行时期.class文件进入的地方

d. 方法栈:所有方法运行的时候,进入内存中的位置

e.堆:存储的是容器和对象

2. main方法在运行过程中JVM的使用情况

a.在点击run as后,编译产生的.class文件、static方法、static属性进入方法和数据共享区(所以static方法和static变量在编译时执行和加载);

b.接着main方法压栈执行,main方法是程序执行的入口,所以main方法都是最先进入方法栈,在程序执行完毕后,最后弹出方法栈

c.在main方法执行过程中,如果调用了其他的方法,被调用的方法压栈执行,执行完弹出栈

d.在方法执行的过程中变量,常量都在堆内存中存储,引用变量实际上就是指向所存内容的内存地址

扫描二维码关注公众号,回复: 2819849 查看本文章

    

3.对象在运行时的内存图解

main方法进栈执行,new Car()即相当于在堆内存中划分出一块内存,尽管内存中的属性未赋值,但此时各个属性的默认值都已经放入内存中(如String型放入null,int型放入0等),此时其属性在内存中也已经占据位置;然后在给对象赋值的过程中,对象相应属性的位置替换为赋值的值。

猜你喜欢

转载自blog.csdn.net/qq_37918817/article/details/81535280
今日推荐