




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
深入理解JVM
1Java技術與Java虛擬機
說起Java,人們首先想到的是Java編程語言,然而事實上,Java是一種技術,它由四方面組成:Java編
程語言、Java類文件格式、Java虛擬機和Java應用程序接口(JavaAPI)。它們的關系如下圖所示;
Java
類庫
J
a
v
a
Java編譯器虛
擬
機
操作系統(tǒng)
硬件
圖1Java四個方面的關系
運行期環(huán)境代表著Java平臺,開發(fā)人員編寫Java代碼(.java文件),然后將之編譯成字節(jié)碼(.class文件)。
最后字節(jié)碼被裝入內存,一旦字節(jié)碼進入虛擬機,它就會被解釋器解釋執(zhí)行,或者是被即時代碼發(fā)生器有
選擇的轉換成機器碼執(zhí)行。從上圖也可以看出Java平臺由Java虛擬機和Java應用程序接口搭建,Java
語言則是進入這個平臺的通道,用Java語言編寫并編譯的程序可以運行在這個平臺上。這個平臺的結構如
下圖所示:
應用程序和小應用程序
Java基本APIJava標準擴展API
JBVB基類Java標準擴展類
Java虛擬機
移植接口
適配器適配器適配器Java操作系統(tǒng)
瀏覽器操作
操作系統(tǒng)系統(tǒng)操作系統(tǒng)
硬件硬件硬件硬件
瀏覽器上的Java桌面操作系統(tǒng)上的Java小型操作系統(tǒng)上的JavaJava操作系統(tǒng)的Java
在Java平臺的結構中,可以看出,Java虛擬機(JVM)處在核心的位置,是程序與底層操作系統(tǒng)和硬件無
關的關鍵。它的下方是移植接口,移植接口由兩部分組成:適配器和Java操作系統(tǒng),其中依賴于平臺的部
分稱為適配器;JVM通過移植接口在具體的平臺和操作系統(tǒng)上實現(xiàn);在JVM的上方是Java的基本類庫
和擴展類庫以及它們的API,利用JavaAPI編寫的應用程序(application)和小程序(Javaapplet)可以在
任何Java平臺上運行而無需考慮底層平臺,就是因為有Java虛擬機(JVM)實現(xiàn)了程序與操作系統(tǒng)的分離,
從而實現(xiàn)了Java的平臺無關性。
那么到底什么是Java虛擬機(JVM)呢?通常我們談論JVM時,我們的意思可能是:
1.對JVM規(guī)范的的比較抽象的說明;
2.對JVM的具體實現(xiàn);
3.在程序運行期間所生成的一個JVM實例。
對JVM規(guī)范的的抽象說明是一些概念的集合,它們已經在書《TheJavaVirtualMachineSpecification))
(《Java虛擬機規(guī)范》)中被詳細地描述了;對JVM的具體實現(xiàn)要么是軟件,要么是軟件和硬件的組合,
它已經被許多生產廠商所實現(xiàn),并存在于多種平臺之上;運行Java程序的任務由JVM的運行期實例單個
承擔。在本文中我們所討論的Java虛擬機(JVM)主要針對第三種情況而言。它可以被看成一個想象中的機
器,在實際的計算機上通過軟件模擬來實現(xiàn),有自己想象中的硬件,如處理器、堆棧、寄存器等,還有自
己相應的指令系統(tǒng)。
JVM在它的生存周期中有一個明確的任務,那就是運行Java程序,因此當Java程序啟動的時候,就產生
JVM的一個實例;當程序運行結束的時候,該實例也跟著消失了。下面我們從JVM的體系結構和它的運
行過程這兩個方面來對它進行比較深入的研究。
2Java虛擬機的體系結構
剛才已經提到,JVM可以由不同的廠商來實現(xiàn)。由于廠商的不同必然導致JVM在實現(xiàn)上的一些不同,然
而JVM還是可以實現(xiàn)跨平臺的特性,這就要歸功于設計JVM時的體系結構了。
我們知道,一個JVM實例的行為不光是它自己的事,還涉及到它的子系統(tǒng)、存儲區(qū)域、數(shù)據(jù)類型和指令這
些部分,它們描述了JVM的一個抽象的內部體系結構,其目的不光規(guī)定實現(xiàn)JVM時它內部的體系結構,
更重要的是提供了一種方式,用于嚴格定義實現(xiàn)時的外部行為。每個JVM都有兩種機制,一個是裝載具有
合適名稱的類(類或是接口),叫做類裝載子系統(tǒng);另外的一個負責執(zhí)行包含在已裝載的類或接口中的指令,
叫做運行引擎。每個JVM又包括方法區(qū)、堆、Java棧、程序計數(shù)器和本地方法棧這五個部分,這幾個部
分和類裝載機制與運行引擎機制一起組成的體系結構圖為:
本
的
方
法
庫
虛
域;當
這些區(qū)
都共享
的線程
的所有
M內
于JV
運行
個堆,
域和一
的方法
它自己
有一個
實例都
的每個
JVM
運行
程序
;當
法域中
放到方
把它們
,并
類信息
包含的
數(shù)據(jù)所
二進制
其中的
它解析
候,
件的時
載類文
擬機裝
和
計數(shù)器
的程序
有自己
都會擁
時候,
創(chuàng)建的
個線程
;而每
于堆上
對象置
的所有
初始化
把程序
VM
候,J
的時
a
用Jav
程調
該線
儲為
則存
va棧
的Ja
線程
指令,
執(zhí)行的
即將被
下一條
值指向
器中的
序計數(shù)
其中程
棧,
Java
。
的實現(xiàn)
于具體
棧依賴
該方法
棧,
地方法
儲在本
態(tài)被存
用的狀
方法調
:本地
的狀態(tài)
方法
說明。
分進行
幾個部
別對這
下面分
每條指
管對于
。盡
決定的
令集所
是由指
的行為
,它
規(guī)范中
擬機
va虛
在Ja
位置,
的核心
VM
處于J
引擎
執(zhí)行
少。
言之甚
么做卻
對于怎
么,但
該做什
實現(xiàn)應
,它的
指令時
碼遇到
行字節(jié)
M執(zhí)
當JV
明了
地說
詳細
范很
令,規(guī)
器,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保安人員勞動合同保安人員合同
- 辦公家具定點采購合同
- 洗車機施工方案
- 小區(qū)商鋪裝飾裝修協(xié)議書
- 九龍坡屋頂漏水施工方案
- 《陶淵明集》序 賞析
- 南充硅pu籃球場施工方案
- 建筑工程廉潔監(jiān)理合同協(xié)議-@-1
- 泄流箱涵施工方案
- 遼河吹填施工方案
- 同濟大學信紙
- panasonic樣本搜索光盤
- 項目申報表雙語教學示范課程建設項目
- 工作交接表excel模板
- (完整word版)新《中華頌》朗誦稿
- 朗讀技巧與方法指導
- 《中小學美術教學論》第一章 美術教學論及其研究的對象
- 焊接專業(yè)英語詞典
- 糖尿病健康教育及飲食指導
- PFMEA模板完整版文檔
- 三無曲線(有緩)繩正法撥道自動計算表
評論
0/150
提交評論