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