1. 程式人生 > >[Java]Java類和物件記憶體分配詳解

[Java]Java類和物件記憶體分配詳解

描述

程式碼說明:
一.當Person p1 = new Person();第一次被呼叫時需要做兩件事:
1.先判斷類載入器是否載入過Person類,如果沒有則載入到Person型別到方法區
2.在堆中開闢記憶體空間,在棧中物件名引用(指向)堆的相應記憶體空間
二. p1.name = '皓皓': 將堆中name賦值為‘皓皓’;
三. Person p2 = new Person(): 此時方法區中已經存在Person類,所以不需要再次載入
四. p2.name = 'john'; 將堆中name賦值為‘john’;

類和物件程式碼

// 建立類
public class Person{
    // 編寫屬性
    String name;
    int age;
    doubel height;
    // 編寫方法
    public void eat(){

    }
} 


// 類的例項化
public static void main(String[] args) {
    Person p1 = new Person();
    p1.name = '皓皓':
    Person p2 = new Person():
    p2.name = 'john';
}

類和物件記憶體分配詳解圖

image

總結

棧:物件的引用、區域性變數
堆:物件、全域性變數
方法區:類資訊