名詞定義
- 基本類型:8 種內置類型(boolean、char、byte、short、int、long、float、double)
- 引用類型:所有可
new 創建對象的類型(繼承自 Object)
存儲方式差異
- 引用類型 → 堆:全局共享、所有線程可訪問、需加鎖同步、分配復雜耗時
- 基本類型 → 棧:線程私有、無同步開銷、分配極快、容量有限
比喻:棧 = 個人小金庫(隨取隨用、額度小);堆 = 國庫(額度大、辦手續慢)。
為什麼這樣設計?
James Gosling 折中決策:
- 全放棧?不現實:線程私有難共享、容量小、結構受限
- 全放堆?性能災難:
int n = 0 也要走堆分配流程,1995 年 4MB 內存機器跑不動
- 折中:引用類型(對象)進堆,基本類型(值)留棧
設計帶來的弊端
- 破壞「純面向對象」:基本類型非 Object 子類
- 引入包裝類冗余:容器等場景需 Integer/Byte 等包裝,語言變複雜
性能啟示
new 創建對象開銷大(分配 + 初始化 + 將來 GC 回收)
- 能避免
new 就避免,能用基本類型就用基本類型
- 下一篇將實戰驗證內存分配對性能的具體影響