[Java]Java類和物件記憶體分配詳解
阿新 • • 發佈:2018-12-06
描述
程式碼說明:
一.當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'; }
類和物件記憶體分配詳解圖
總結
棧:物件的引用、區域性變數
堆:物件、全域性變數
方法區:類資訊