创建对象内存分析
在计算机中,内存可简要分为栈内存、堆内存,堆内存中又有一块内存称为方法区,如下图:
运行以下代码:
public class demo {
public static void main(String[] args) {
Pet dog=new Pet();
dog.name="狗";
dog.age=1;
dog.shout();
Pet cat=new Pet();
}
}
class Pet{
public String name;
public int age;
public void shout() {
System.out.println("!!!!");
}
}
首先是加载demo类,在方法去开辟一块内存空间,进入main方法后,会在栈内存中开辟一块空间,如下图:
然后执行Pet dog=new Pet();,在方法区中开辟pet类的地址空间后,在栈内存中加载main方法和引用变量dog,dog指向堆内存中新开辟的一块地址,如下图
执行dog.name=“狗”;dog.age=1;dog.shout();三句后,修改了堆内存中dog变量指向的地址块,变为如下图
最后执行Pet cat=new Pet();再次创建一个对象,在栈内存中添加一个引用变量名cat,堆内存中开辟一块地址,如下图:
自此,代码执行完毕。
(本文章内容参考kuangStudy中的视频教程)