(來源:極客學院JVM教程)
內存區域基礎概念:
1.java虛擬機和java內存區域
2.java虛擬機棧和本地方法棧
3.java堆
4.方法區和運行時常量池
5.直接內存
1.java虛擬機和java內存區域
Menu
1>什麼是虛擬機,什麼是java虛擬機
2>概念模型與具體實現
3>java虛擬機運行時數據區
4>程序計數區域
1> 什麼是虛擬機,什麼是java虛擬機
定義:模擬某種計算機體系結構,執行特定指令集的軟件
分類:系統虛擬機進程虛擬機
(並不會完整的模擬一個操作系統的運行環境)
(僅提供特定指令集的運行環境)
Virtual BoxJVM
VMwareAdobe Flash Player
FC模擬器
(JVM可劃分出高級語言虛擬機)
JVM .NET CLR P-Code
(高級語言虛擬機把特定指令集的範圍進一步限定爲高級語言)
java語言虛擬機:可以執行java語言的高級語言虛擬機,但是java語言虛擬機並不一定就被稱爲JVM(java虛擬機)
java虛擬機並不一定執行java語言
Oracle HotSpot 虛擬機:目前,應用最廣範的虛擬機,命名來自於“熱點代碼探測”技術
2 >概念模型與具體實現
公有設計,私有實現
同樣的java代碼,在不同的java虛擬機中都可以實現,唯一區別就是實現速度的問題
3>java虛擬機的運行時內存區域
是所有java虛擬機共同的內存區域概念模型
運行時數據區的劃分:
.程序計數器
`.java堆
.java虛擬機棧
.本地方法棧
.方法區
4> 程序計數器(Program Counter Register)
. 一塊較小的內存空間,它的作用可以看做是當前線程所執行的字節碼的行 號指示器
. 可以理解爲Eclipse內的行號指示器,不過其指示的是字節碼文件的行號
. 如果線程正在執行的是一個java方法,這個計數器記錄的是正在執行的虛 擬機字節碼指令的地址
. 如果正在執行的是一個本地Native方法,則這個計數器值爲空