简单的对象内存图

简单的对象内存图

七月 15, 2019

当我们创建对象、访问成员变量、调用成员方法时内存中所产生的的变化

git

1.进入方法区找到main方法

2.main方法进栈(或压栈)

3.进栈后栈(Stack)会为main方法开辟一个的空间,并创建变量

4.在堆中new出对象

5.在方法区中找到所new对象的成员变量并以它为模板在堆内存中创建一样的成员变量,然后在堆内存中赋上默认值

6.然后在方法区找到成员方法的地址并把它赋给堆当中的成员方法(注意:堆中的成员方法只是指向方法区里成员方法的地址)

7.把方法区里new对象的地址赋给栈内的变量

8.在mian方法中修改成员变量会通过被赋予地址的变量找到堆内的new对象并对其成员变量进行修改

9.栈内调用到成员方法时会先通过地址找到堆内的成员方法然后又通过堆内的成员方法所指向的地址找到方法区里的成员方法,最后让其进栈

10.进栈完成后为其开辟空间,等执行完方法内的操作完成后会就出栈(或弹栈)

11.当main方法执行完成后就会自动出栈,程序就此结束了