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類

其他:靜態變量是存在於方法區的,但操作對象的指向還是堆中的實體對象,
 可以理解爲方法區是一個簡易模板模型

 

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