2023年java虛擬機(jī)詳解_第1頁(yè)
2023年java虛擬機(jī)詳解_第2頁(yè)
2023年java虛擬機(jī)詳解_第3頁(yè)
2023年java虛擬機(jī)詳解_第4頁(yè)
2023年java虛擬機(jī)詳解_第5頁(yè)
已閱讀5頁(yè),還剩69頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

深入理解JVM

1Java技術(shù)與Java虛擬機(jī)

說(shuō)起Java,人們首先想到的是Java編程語(yǔ)言,然而事實(shí)上,Java是一種技術(shù),它由四方面組成:Java編

程語(yǔ)言、Java類文件格式、Java虛擬機(jī)和Java應(yīng)用程序接口(JavaAPI)。它們的關(guān)系如下圖所示;

Java

類庫(kù)

J

a

v

a

Java編譯器虛

機(jī)

操作系統(tǒng)

硬件

圖1Java四個(gè)方面的關(guān)系

運(yùn)行期環(huán)境代表著Java平臺(tái),開(kāi)發(fā)人員編寫(xiě)Java代碼(.java文件),然后將之編譯成字節(jié)碼(.class文件)。

最后字節(jié)碼被裝入內(nèi)存,一旦字節(jié)碼進(jìn)入虛擬機(jī),它就會(huì)被解釋器解釋執(zhí)行,或者是被即時(shí)代碼發(fā)生器有

選擇的轉(zhuǎn)換成機(jī)器碼執(zhí)行。從上圖也可以看出Java平臺(tái)由Java虛擬機(jī)和Java應(yīng)用程序接口搭建,Java

語(yǔ)言則是進(jìn)入這個(gè)平臺(tái)的通道,用Java語(yǔ)言編寫(xiě)并編譯的程序可以運(yùn)行在這個(gè)平臺(tái)上。這個(gè)平臺(tái)的結(jié)構(gòu)如

下圖所示:

應(yīng)用程序和小應(yīng)用程序

Java基本APIJava標(biāo)準(zhǔn)擴(kuò)展API

JBVB基類Java標(biāo)準(zhǔn)擴(kuò)展類

Java虛擬機(jī)

移植接口

適配器適配器適配器Java操作系統(tǒng)

瀏覽器操作

操作系統(tǒng)系統(tǒng)操作系統(tǒng)

硬件硬件硬件硬件

瀏覽器上的Java桌面操作系統(tǒng)上的Java小型操作系統(tǒng)上的JavaJava操作系統(tǒng)的Java

在Java平臺(tái)的結(jié)構(gòu)中,可以看出,Java虛擬機(jī)(JVM)處在核心的位置,是程序與底層操作系統(tǒng)和硬件無(wú)

關(guān)的關(guān)鍵。它的下方是移植接口,移植接口由兩部分組成:適配器和Java操作系統(tǒng),其中依賴于平臺(tái)的部

分稱為適配器;JVM通過(guò)移植接口在具體的平臺(tái)和操作系統(tǒng)上實(shí)現(xiàn);在JVM的上方是Java的基本類庫(kù)

和擴(kuò)展類庫(kù)以及它們的API,利用JavaAPI編寫(xiě)的應(yīng)用程序(application)和小程序(Javaapplet)可以在

任何Java平臺(tái)上運(yùn)行而無(wú)需考慮底層平臺(tái),就是因?yàn)橛蠮ava虛擬機(jī)(JVM)實(shí)現(xiàn)了程序與操作系統(tǒng)的分離,

從而實(shí)現(xiàn)了Java的平臺(tái)無(wú)關(guān)性。

那么到底什么是Java虛擬機(jī)(JVM)呢?通常我們談?wù)揓VM時(shí),我們的意思可能是:

1.對(duì)JVM規(guī)范的的比較抽象的說(shuō)明;

2.對(duì)JVM的具體實(shí)現(xiàn);

3.在程序運(yùn)行期間所生成的一個(gè)JVM實(shí)例。

對(duì)JVM規(guī)范的的抽象說(shuō)明是一些概念的集合,它們已經(jīng)在書(shū)《TheJavaVirtualMachineSpecification))

(《Java虛擬機(jī)規(guī)范》)中被詳細(xì)地描述了;對(duì)JVM的具體實(shí)現(xiàn)要么是軟件,要么是軟件和硬件的組合,

它已經(jīng)被許多生產(chǎn)廠商所實(shí)現(xiàn),并存在于多種平臺(tái)之上;運(yùn)行Java程序的任務(wù)由JVM的運(yùn)行期實(shí)例單個(gè)

承擔(dān)。在本文中我們所討論的Java虛擬機(jī)(JVM)主要針對(duì)第三種情況而言。它可以被看成一個(gè)想象中的機(jī)

器,在實(shí)際的計(jì)算機(jī)上通過(guò)軟件模擬來(lái)實(shí)現(xiàn),有自己想象中的硬件,如處理器、堆棧、寄存器等,還有自

己相應(yīng)的指令系統(tǒng)。

JVM在它的生存周期中有一個(gè)明確的任務(wù),那就是運(yùn)行Java程序,因此當(dāng)Java程序啟動(dòng)的時(shí)候,就產(chǎn)生

JVM的一個(gè)實(shí)例;當(dāng)程序運(yùn)行結(jié)束的時(shí)候,該實(shí)例也跟著消失了。下面我們從JVM的體系結(jié)構(gòu)和它的運(yùn)

行過(guò)程這兩個(gè)方面來(lái)對(duì)它進(jìn)行比較深入的研究。

2Java虛擬機(jī)的體系結(jié)構(gòu)

剛才已經(jīng)提到,JVM可以由不同的廠商來(lái)實(shí)現(xiàn)。由于廠商的不同必然導(dǎo)致JVM在實(shí)現(xiàn)上的一些不同,然

而JVM還是可以實(shí)現(xiàn)跨平臺(tái)的特性,這就要?dú)w功于設(shè)計(jì)JVM時(shí)的體系結(jié)構(gòu)了。

我們知道,一個(gè)JVM實(shí)例的行為不光是它自己的事,還涉及到它的子系統(tǒng)、存儲(chǔ)區(qū)域、數(shù)據(jù)類型和指令這

些部分,它們描述了JVM的一個(gè)抽象的內(nèi)部體系結(jié)構(gòu),其目的不光規(guī)定實(shí)現(xiàn)JVM時(shí)它內(nèi)部的體系結(jié)構(gòu),

更重要的是提供了一種方式,用于嚴(yán)格定義實(shí)現(xiàn)時(shí)的外部行為。每個(gè)JVM都有兩種機(jī)制,一個(gè)是裝載具有

合適名稱的類(類或是接口),叫做類裝載子系統(tǒng);另外的一個(gè)負(fù)責(zé)執(zhí)行包含在已裝載的類或接口中的指令,

叫做運(yùn)行引擎。每個(gè)JVM又包括方法區(qū)、堆、Java棧、程序計(jì)數(shù)器和本地方法棧這五個(gè)部分,這幾個(gè)部

分和類裝載機(jī)制與運(yùn)行引擎機(jī)制一起組成的體系結(jié)構(gòu)圖為:

庫(kù)

域;當(dāng)

這些區(qū)

都共享

的線程

的所有

M內(nèi)

于JV

運(yùn)行

個(gè)堆,

域和一

的方法

它自己

有一個(gè)

實(shí)例都

的每個(gè)

JVM

運(yùn)行

程序

;當(dāng)

法域中

放到方

把它們

,并

類信息

包含的

數(shù)據(jù)所

二進(jìn)制

其中的

它解析

候,

件的時(shí)

載類文

擬機(jī)裝

計(jì)數(shù)器

的程序

有自己

都會(huì)擁

時(shí)候,

創(chuàng)建的

個(gè)線程

;而每

于堆上

對(duì)象置

的所有

初始化

把程序

VM

候,J

的時(shí)

a

用Jav

程調(diào)

該線

儲(chǔ)為

則存

va棧

的Ja

線程

指令,

執(zhí)行的

即將被

下一條

值指向

器中的

序計(jì)數(shù)

其中程

棧,

Java

。

的實(shí)現(xiàn)

于具體

棧依賴

該方法

棧,

地方法

儲(chǔ)在本

態(tài)被存

用的狀

方法調(diào)

:本地

的狀態(tài)

方法

說(shuō)明。

分進(jìn)行

幾個(gè)部

別對(duì)這

下面分

每條指

管對(duì)于

。盡

決定的

令集所

是由指

的行為

,它

規(guī)范中

擬機(jī)

va虛

在Ja

位置,

的核心

VM

處于J

引擎

執(zhí)行

少。

言之甚

么做卻

對(duì)于怎

么,但

該做什

實(shí)現(xiàn)應(yīng)

,它的

指令時(shí)

碼遇到

行字節(jié)

M執(zhí)

當(dāng)JV

明了

地說(shuō)

詳細(xì)

范很

令,規(guī)

器,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論