Java面试:说一下New一个对象发生了什么?

New一个对象发生了什么?
    1.把class文件加载到方法区中,
    2.堆中分配对象内存,栈中分配引用内存
    3.方法区中实例变量复制一份到堆中
    4.实例对象从方法区中调用构造方法进行初始化堆中对象

例如:new Person() 发生了什么

1. 加载Person.class文件到方法区,同时加载Person类中的static属性

2. 在main方法所在的栈区分配引用(reference) p;

3. 在java堆中开辟空间存放Person类,但是不进行初始化操作。

4. 默认初始化数据

5. 将引用p指向java中新开辟的Person类

其他:静态变量是存在于方法区的,但操作对象的指向还是堆中的实体对象,
 可以理解为方法区是一个简易模板模型

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章