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.在方法执行的过程中变量,常量都在堆内存中存储,引用变量实际上就是指向所存内容的内存地址
3.对象在运行时的内存图解
main方法进栈执行,new Car()即相当于在堆内存中划分出一块内存,尽管内存中的属性未赋值,但此时各个属性的默认值都已经放入内存中(如String型放入null,int型放入0等),此时其属性在内存中也已经占据位置;然后在给对象赋值的过程中,对象相应属性的位置替换为赋值的值。