面向对象系列文章(四) - 两个对象的内存图

1. 两个对象的内存图如下:
两个对象的内存图.png

流程如下:

1>:首先在方法区中开辟class文件区,最上边是StudentDemo2.class文件区,main()方法,下边是Student对象的class文件区;
2>:在栈中加载 main()方法,然后创建Student s1;
3>:在堆中new Student对象,复制方法区 中的 Student.class文件区的name、age到堆内存中,然后给堆内存中的name、age一个默认值null、0,然后给 一个 0xa3地址值,把这个 0xa3地址值 赋值给 栈内存中的 s1,让 s1中的 0xa3指向堆内存中的 0xa3;
4>:然后给之前的默认值赋值为王子文、24,并且让其中的 0xf4指向 方法区中的 0xf4;
5>:同样的,对于 s2也在 堆内存中复制 一个 new Student对象,地址为 0x2b,并且给name、age赋值为 Novate、26,让 它里边的 0xf4指向 方法区中的 0xf4,然后把 0x2b赋值给 栈内存中的 s2;
6>:最后当s1、s2的study()方法都调用完毕之后,在栈内存中消失,最后main()方法消失即可;

你可能感兴趣的:(面向对象系列文章(四) - 两个对象的内存图)