变量、对象的内存 - Java

内存结构

  • 本地方法栈
  • 寄存器
  • 元空间

方法区

JDK8开始,取消了 方法区 ,新增元空间。原方法区的功能进行了拆分,放到了堆和元空间中

运行一个类时,这个类的字节码文件就会加载到方法区进行临时的存储

方法被调用时,就要进栈执行

新建一个类的过程

  1. 加载 class文件 (方法区)
  2. 申明局部变量 (栈)
  3. 在堆内存中开辟一个空间
    1. 从方法区中拷贝变量
    2. 成员方法的地址 (指向方法区的方法)
  4. 默认初始化 (0 0.0 null)
  5. 显示初始化 (成员变量等号赋值)
  6. 构造方法初始化
  7. 将堆内存中的地址赋值给栈中的局部变量

this.

this. 调用者的地址值

局部变量和成员变量

局部变量在栈(栈中的方法里),成员变量在堆