本文主要作要點概況,做爲《深刻理解Java虛擬機》的讀書筆記,並整理了一些網絡上的博文。更方便理解JVMjava
程序計數器
- 線程獨佔區
- 能夠理解爲記錄當前線程所執行字節碼的行號
- 惟一JVM規範中沒有規定任何OOM的狀況
JAVA虛擬機棧
- 線程獨享區
- java方法執行的動態內存模型
- 棧幀:每一個方法的執行,都會建立一個棧幀,伴隨方法從建立到完成。存儲局部變量表、操做數棧、動態連接、方法出口
- 局部變量表:存放編譯期可知的各類基本數據類型,引用類型、return address類型。局部變量表的內存空間是在編譯期完成分配的。進入一個方法棧幀分配多少內存是固定的。在方法運行期間不會改變局部變量表的大小
本地方法棧
java 堆
方法區
- 線程共享區
- 存儲運行時常量池。已經被虛擬機加載的類信息、常量、靜態變量。即時編譯期編譯後的代碼等數據
- 類的信息:類的版本、字段、方法、接口
- 運行時常量池:存放 類文件編譯時生產的 各類字面量和符號引用。運行時也能夠新增常量如String intern
- 方法區和永久代
- 垃圾回收在方法去的行爲
- 異常的定義
總結