jvm定義了若干程式執行時會使用執行時資料區,其中有一些會隨著虛擬機器啟動而建立,隨著虛擬機器退出銷毀。有一些則是與執行緒繫結,與執行緒對應的資料區會隨著執行緒的生命週期
每個執行緒共有的有heap 和method area 私有的每個執行緒乙份的有pc register,virtual machine stack , native method stack
後台系統執行緒在hot spot虛擬機器中主要有以下幾個
jvm的pc暫存器是對物理pc暫存器的一種抽象模擬,主要用於記錄當前執行緒執行到哪個位置
他是一塊很小的記憶體空間,幾乎可以忽略不計,也是執行速度最快的儲存區域
jvm規範中,每個執行緒都有自己的pc暫存器,是執行緒私有的,生命週期與執行緒生命週期一致
任何時間乙個執行緒都只有乙個方法在執行,也就是當前方法, pc暫存器會儲存當前執行緒正在執行的方法的jvm指令位址 如果執行的是本地native方法則是undefine
他是程式控制流的指示器,分支,迴圈,跳轉,異常處理,執行緒恢復等基礎功能都依賴pc暫存器.位元組碼直譯器工作就是通過改變這個計數器的值來選取嚇一跳需要執行的位元組碼指令
他是唯一乙個在jvm規範中沒有任何outofmemoryerror情況的區域
使用pc暫存器儲存位元組碼指令位址有什麼用?
pc暫存器為什麼設定為私有?
執行時資料區
按理說,在介紹完前端編譯器之後,我們應該介紹如何讓 jvm 去解釋執行 這個編譯後的 class 檔案。但是感覺並不是很恰當。如果把 class 檔案比做新購買的家具,那麼如果需要把家具擺放到家裡,是不是得先了解房子的結構和布局,然後才能將家具進行正確的擺放。我們這裡介紹的 執行時資料區 相當於前面...
JVM執行時資料區
根據 jvm 規範,jvm 記憶體共分為虛擬機器棧 堆 方法區 程式計數器 本地方法棧五個部分。記憶體空間 runtime data area 中可以按照是否執行緒共享分為兩塊,執行緒共享的是方法區 method area 和堆 heap 執行緒獨享的是虛擬機器棧 vm stack 本地方法棧 na...
JVM 執行時資料區
jdk版本 8 class檔案 class content class物件 物件 的含義 class檔案 儲存在磁碟上的.class檔案 十六進製制位元組碼檔案 class content 類載入器子系統載入class檔案,儲存到記憶體中的位元組流,解析前這塊記憶體區域叫class content ...