1.執行時資料區
1.2 執行時資料區及執行緒概述
JVM將記憶體劃分為倆種型別的資料區域
- 執行緒共享:JVM啟動時建立,退出時才銷燬
- 執行緒私有:執行緒建立時建立,執行緒退出時銷燬
1.2.1 執行時資料區
JVM記憶體佈局規定了Java執行過程中記憶體申請,分配,管理的策略,保證高效執行。
不同JVM在記憶體劃分和管理機制方面有部分差異,探討經典JVM佈局HotSpot
劃分,執行緒共享為堆區,方法區,其他私有
- 本地方法棧
- 程式計數器
- 虛擬機器棧:以棧幀為基本單位構成,棧幀包括區域性變數表,運算元棧,動態連線,方法返回地址,附加資訊
- 堆區:新生代,老年代
- 方法區
1.2.2 執行緒
在HotSpot中,每個執行緒都與作業系統本地執行緒直接對映。OS將執行緒排程到可用的CPU上,本地執行緒建立成功,呼叫Java執行緒中run方法。
當正常執行結束(未出現異常,捕獲了異常),Java執行緒和本地執行緒都會被回收,並釋放相應資源。
出現未捕獲異常,Java執行緒終止,本地執行緒再決定JVM是否需要終止,當只有守護執行緒時,JVM自動退出
- 守護執行緒:系統性服務,垃圾回收執行緒,編譯執行緒,手動建立守護執行緒
- 非守護執行緒:使用者執行緒,系統工作執行緒