不同虛擬機的運行時數(shù)據(jù)區(qū)可能略微有所不同,但都會遵從 Java 虛擬機規(guī)范,Java虛擬機規(guī)范規(guī)定的區(qū)域分為以下5個部分: ·程序計數(shù)器(Program Counter Register):當(dāng)前線程所執(zhí)行的字節(jié)碼的行號指示器,字節(jié)碼解析器的工作是通過改變這個計數(shù)器的值,來選取下一條需要執(zhí)行的字節(jié)碼指令,分支、循環(huán)、跳轉(zhuǎn)、異常處理、線程恢復(fù)等基礎(chǔ)功能,都需要依賴這個計數(shù)器來完成; ·Java 虛擬機棧(Java Virtual Machine Stacks):用于存儲局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等信息; ·本地方法棧(Native Method Stack):與虛擬機棧的作用是一樣的,只不過虛擬機棧是服務(wù)Java方法的,而本地方法棧是為虛擬機調(diào)用Native方法服務(wù)的; ·Java 堆(Java Heap):Java虛擬機中內(nèi)存最大的一塊,是被所有線程共享的,幾乎所有的對象實例都在這里分配內(nèi)存; ·方法區(qū)(Methed Area):用于存儲已被虛擬機加載的類信息、常量、靜態(tài)變量、即時編譯后的代碼等數(shù)據(jù)。 |
|