内存结构
- 本地方法栈
- 寄存器
- 栈
- 元空间
- 堆
方法区
JDK8开始,取消了 方法区 ,新增元空间。原方法区的功能进行了拆分,放到了堆和元空间中
运行一个类时,这个类的字节码文件就会加载到方法区进行临时的存储
栈
方法被调用时,就要进栈执行
新建一个类的过程
- 加载 class文件 (方法区)
- 申明局部变量 (栈)
- 在堆内存中开辟一个空间
- 从方法区中拷贝变量
- 成员方法的地址 (指向方法区的方法)
- 默认初始化 (0 0.0 null)
- 显示初始化 (成员变量等号赋值)
- 构造方法初始化
- 将堆内存中的地址赋值给栈中的局部变量
this.
this.
调用者的地址值
局部变量和成员变量
局部变量在栈(栈中的方法里),成员变量在堆