一、 物件實體化的底層

- User user宣告變數:
在當前方法的Stack中分配一個局部變數空間,名稱為 user。
此時它只是一個引用(Reference),裡面尚未綁定任何實體。
- new User("Alice")實體化:
在Heap申請一塊記憶體空間,根據User類別的定義分配屬性欄位。
呼叫建構子初始化資料(name = "Alice")。
擁有了實體的記憶體位址。
- =(賦值運算):
將Heap上的記憶體位址賦值給Stack上的user變數。
二、為什麼 Java 只有 Pass by Value?
Pass by Value(傳值呼叫):呼叫方法時,傳遞的是值的複本。
Pass by Reference(傳參考呼叫):呼叫方法時,傳遞的是變數本身的記憶體位址。
不論是基本型別還是物件,全部都是「Pass by Value」。
三、 物件生命週期與垃圾回收

- 當process()方法執行完畢,Stack上的棧幀被銷毀,局部變數temp消失。
- Heap上的User("TempData") 實體失去了所有外部引用,這被稱為「Unreachable Object」。
- JVM的垃圾回收不會立刻清理它,而是在後續執行階段,透過可達性分析(Reachability Analysis)確認它已經無法被任何觸及,才排程將其記憶體空間回收。