JVM內部結構
總覽:

標記字(MarkWord)內部結構(64位):
| 鎖狀態 | 56bit | 1bit | 4bit | 1bit | 2bit | ||
| 25bit | 31bit | 是否偏向鎖 | 鎖標志位 | ||||
| 無鎖 | unused | hashCode | Cms_free | 分代年齡 | 0 | 01 | |
| 偏向鎖 | 線程ID | Epoch:2bit | Cms_free | 分代年齡 | 1 | 01 | |
| 輕量鎖 | 指向棧中的鎖記錄指針 | 00 | |||||
| 重量鎖 | 指向堆中的鎖對象指針 | 10 | |||||
| GC標記 | 空 | 11 | |||||
垃圾回收器關系圖(JDK1.8):

垃圾回收器選型:
單CPU:-XX:+UseSerialGC
多CPU、吞吐量最大化:-XX:+UseParrallelGC
多CPU、響應優先:-XX:+UseConcMarkSweepGC
G1:CMS的上位替代,穩定性有待觀察
JAVA 類加載過程:
-
加載:加載類的字節碼,在方法區創建對應的數據結構(字段、方法、接口等),在堆中生成一個對應的 java.lang.Class 實例。
-
鏈接:
-
- 驗證:驗證字節碼文件是否符合JVM虛擬機的規范,引用是否存在。
- 準備:給靜態字段分配內存,給常量=常量賦初始值。
- 解析:將類中的符號引用轉換為直接引用。
-
初始化:觸發父類初始化,執行<clinit>()方法,執行靜態代碼塊,給靜態變量、常量=字面量賦初始值。
浙公網安備 33010602011771號