虛擬機設計:從0寫8051虛擬機
李述銅學習筆記系列:運行時數(shù)據(jù)區(qū)組成
Java程序計數(shù)器
程序計數(shù)器(Program Counter Register)是一塊較小的內存空間,它可以看作是當前線程所執(zhí)行的字節(jié)碼的行號指示器。在虛擬機的概念模型里,字節(jié)碼解析器的工作是通過改變這個計數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令,分支、循環(huán)、跳轉、異常處理、線程恢復等基礎功能都需要依賴這個計數(shù)器來完成。
特性:內存私有
由于jvm的多線程是通過線程輪流切換并分配處理器執(zhí)行時間的方式來實現(xiàn)的,也就是任何時刻,一個處理器(或者說一個內核)都只會執(zhí)行一條線程中的指令。因此為了線程切換后能恢復到正確的執(zhí)行位置,每個線程都有獨立的程序計數(shù)器。
異常規(guī)定:無
?虛擬機棧
Java虛擬機棧(Java Virtual Machine Stacks)描述的是Java方法執(zhí)行的內存模型,每個方法在執(zhí)行的同時都會創(chuàng)建一個線幀(Stack Frame)用于存儲局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等信息,每個方法從調用直至執(zhí)行完成的過程,都對應著一個線幀在虛擬機棧中入棧到出棧的過程。
特性:內存私有,它的生命周期和線程相同。
異常規(guī)定:StackOverflowError、OutOfMemoryError
?
標簽: