首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 性能優化基石(一):基本類型 vs 引用類型內存模型解析

     編輯:Java 相關知識

名詞定義

  • 基本類型:8 種內置類型(boolean、char、byte、short、int、long、float、double)
  • 引用類型:所有可 new 創建對象的類型(繼承自 Object)

存儲方式差異

  • 引用類型 → 堆:全局共享、所有線程可訪問、需加鎖同步、分配復雜耗時
  • 基本類型 → 棧:線程私有、無同步開銷、分配極快、容量有限

比喻:棧 = 個人小金庫(隨取隨用、額度小);堆 = 國庫(額度大、辦手續慢)。

為什麼這樣設計?

James Gosling 折中決策:

  • 全放棧?不現實:線程私有難共享、容量小、結構受限
  • 全放堆?性能災難:int n = 0 也要走堆分配流程,1995 年 4MB 內存機器跑不動
  • 折中:引用類型(對象)進堆,基本類型(值)留棧

設計帶來的弊端

  1. 破壞「純面向對象」:基本類型非 Object 子類
  2. 引入包裝類冗余:容器等場景需 Integer/Byte 等包裝,語言變複雜

性能啟示

  • new 創建對象開銷大(分配 + 初始化 + 將來 GC 回收)
  • 能避免 new 就避免,能用基本類型就用基本類型
  • 下一篇將實戰驗證內存分配對性能的具體影響
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved