螞蟻幣是什么網(wǎng)站建設(shè)網(wǎng)站推廣應(yīng)該怎么做?
一、Java Virtual Machine (JVM)概述
Java Virtual Machine 虛擬機(jī) (JVM) 是一種抽象的計(jì)算機(jī)。JVM本身也是一個(gè)程序,但是對(duì)于編寫(xiě)在其中執(zhí)行的程序來(lái)說(shuō),它看起來(lái)像一臺(tái)機(jī)器。對(duì)于特定的操作系統(tǒng),每個(gè) JVM 實(shí)現(xiàn)都將 Java 編程指令轉(zhuǎn)換為在本地操作系統(tǒng)上運(yùn)行的指令和命令。這樣,Java程序就實(shí)現(xiàn)了平臺(tái)獨(dú)立性。第一個(gè)JVM的實(shí)現(xiàn)就是Hotspot
二、Hotspot Architecture
The HotSpot JVM的邏輯結(jié)構(gòu)圖如下:
Hotspot虛機(jī)機(jī)主要的組件包括the classloader(類(lèi)加載器), the runtime data areas(運(yùn)行時(shí)數(shù)據(jù)區(qū)), and the execution(執(zhí)行引擎)
1、 the runtime data areas(運(yùn)行時(shí)數(shù)據(jù)區(qū))
1、1 The pc Register (program counter registers )程序計(jì)數(shù)寄存器
JVM可以支持同時(shí)多線程運(yùn)行,每一個(gè)JVM線程都會(huì)有它自己的pc Register ,pc Register 中存儲(chǔ)的其實(shí)就是當(dāng)前被執(zhí)行的代碼的地址。如果一個(gè)方法(method)不是native方法,那么pc Register 中存儲(chǔ)的其實(shí)就是當(dāng)前被執(zhí)行的代碼的地址,如果一個(gè)方法(method)是native方法,那么pc Register 是無(wú)值的
1、2 Heap(堆)
在JVM中,有一個(gè)區(qū)域被叫做Heap(堆),該區(qū)域被所有的JVM線程所共有,所有的java類(lèi)的實(shí)例對(duì)象( class instances)和數(shù)組(arrays)的內(nèi)存申請(qǐng)都會(huì)被分配(allocated)在這個(gè)區(qū)域中。
1、3 Java Virtual Machine Stacks(棧)
每一個(gè)JVM線程都會(huì)有一個(gè)私有的棧(private Java Virtual Machine stack),與該線程一同被創(chuàng)建出來(lái)。
1、4 Method Area (方法區(qū))
在JVM中,有一個(gè)區(qū)域被叫做Method Area(方法區(qū)),該區(qū)域被所有的JVM線程所共有。