在java程式運作過程中,jvm定義了各種區域用于存儲運作時資料。其中的有些資料區域在jvm啟動時建立,并隻在jvm退出時銷毀。其它的資料區域與每個線程相關。這些資料區域,線上程建立時建立,線上程退出時銷毀。
jvm 由3部分組成:
棧區
---------------------------------
基礎資料類型 byte short int long float double char boolean
方法的形式參數,方法調用完後從棧空間回收
引用對象的位址,引用完後,棧空間位址立即被回收,堆空間等待gc
棧内的資料線程之間獨立
具體劃分為:基本類型變量區、執行環境上下文、操作指令區
堆區
this
new 出來的對象
數組
jvm隻有一個堆區,并被所有線程共享
方法區(又叫靜态區和永久區)
字元串常量
static
所有class
被所有線程共享, 其記憶體放程式中永遠唯一的元素
案例分析:
執行分析說明:
下面再補充幾個圖,進一步了解: