版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、JavaJava虛擬機(jī)的類的裝載虛擬機(jī)的類的裝載2009061216:02haobobesthaobobest博客我要評(píng)論(0)字號(hào):T|T本文分為三個(gè)大的部分,對(duì)Java虛擬機(jī)的類的裝載進(jìn)行了講述,其中最主要的是Java虛擬機(jī)的類裝載實(shí)現(xiàn)與應(yīng)用和Java虛擬機(jī)的類裝載原理,最后對(duì)整篇文章的總結(jié)。AD:一、引言一、引言Java虛擬機(jī)(JVM)的類裝載就是指將包含在類文件中的字節(jié)碼裝載到JVM中并使其成為JVM一部分的過程。JVM的類動(dòng)態(tài)
2、裝載技術(shù)能夠在運(yùn)行時(shí)刻動(dòng)態(tài)地加載或者替換系統(tǒng)的某些功能模塊而不影響系統(tǒng)其他功能模塊的正常運(yùn)行。本文將分析JVM中的類裝載系統(tǒng),探討JVM中類裝載的原理、實(shí)現(xiàn)以及應(yīng)用。二、二、JavaJava虛擬機(jī)的類裝載實(shí)現(xiàn)與應(yīng)用虛擬機(jī)的類裝載實(shí)現(xiàn)與應(yīng)用2.12.1裝載過程簡介裝載過程簡介所謂裝載就是尋找一個(gè)類或是一個(gè)接口的二進(jìn)制形式并用該二進(jìn)制形式來構(gòu)造代表這個(gè)類或是這個(gè)接口的class對(duì)象的過程,其中類或接口的名稱是給定了的。當(dāng)然名稱也可以通過計(jì)算
3、得到,但是更常見的是通過搜索源代碼經(jīng)過編譯器編譯后所得到的二進(jìn)制形式來構(gòu)造。在Java中,類裝載器把一個(gè)類裝入Java虛擬機(jī)中,要經(jīng)過三個(gè)步驟來完成:裝載、鏈接和初始化,其中鏈接又可以分成校驗(yàn)、準(zhǔn)備和解析三步,除了解析外,其它步驟是嚴(yán)格按照順序完成的,各個(gè)步驟的主要工作如下:裝載:查找和導(dǎo)入類或接口的二進(jìn)制數(shù)據(jù);鏈接:執(zhí)行下面的校驗(yàn)、準(zhǔn)備和解析步驟,其中解析步驟是可以選擇的;校驗(yàn):檢查導(dǎo)入類或接口的二進(jìn)制數(shù)據(jù)的正確性;準(zhǔn)備:給類的靜態(tài)變
4、量分配并初始化存儲(chǔ)空間;解析:將符號(hào)引用轉(zhuǎn)成直接引用;初始化:激活類的靜態(tài)變量的初始化Java代碼和靜態(tài)Java代碼塊。檢查請(qǐng)求要裝載的類是否已經(jīng)被裝載(3)檢查請(qǐng)求加載的類是否是系統(tǒng)類(4)嘗試從類裝載器的存儲(chǔ)區(qū)獲取所請(qǐng)求的類(5)在虛擬機(jī)中定義所請(qǐng)求的類(6)解析所請(qǐng)求的類(7)返回所請(qǐng)求的類。所有的Java虛擬機(jī)都包括一個(gè)內(nèi)置的類裝載器,這個(gè)內(nèi)置的類庫裝載器被稱為根裝載器(bootstrapClassLoader)。根裝載器的特殊
5、之處是它只能夠裝載在設(shè)計(jì)時(shí)刻已知的類因此虛擬機(jī)假定由根裝載器所裝載的類都是安全的、可信任的可以不經(jīng)過安全認(rèn)證而直接運(yùn)行。當(dāng)應(yīng)用程序需要加載并不是設(shè)計(jì)時(shí)就知道的類時(shí)必須使用用戶自定義的裝載器(userdefinedClassLoader)。下面我們舉例說明它的應(yīng)用。1.publicabstractclassMultiClassLoaderextendsClassLoader2....3.publicsynchronizedClassloa
6、dClass(Stringsbooleanflag)4.throwsClassNotFoundException5.6.7.Classclass1=(Class)classes.get(s)8.9.10.if(class1!=null)returnclass111.try12.class1=super.findSystemClass(s)13.returnclass114.15.catch(ClassNotFoundException_
7、ex)16.System.out.println(“Notasystemclass.“)17.18.19.20.byteabyte0[]=loadClassBytes(s)21.if(abyte0==null)thrownewClassNotFoundException()22.23.class1=defineClass(nullabyte00abyte0.length)24.if(class1==null)thrownewClassF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java虛擬機(jī)
- Java虛擬機(jī)衰退分析.pdf
- 基于FPGA的Java虛擬機(jī)實(shí)現(xiàn).pdf
- Java Card虛擬機(jī)的研究與優(yōu)化.pdf
- Java虛擬機(jī)的自適應(yīng)動(dòng)態(tài)優(yōu)化.pdf
- Wolf Linux Java虛擬機(jī)研究.pdf
- Java可視虛擬機(jī)的研究與實(shí)現(xiàn).pdf
- Java虛擬機(jī)的內(nèi)存管理策略的研究.pdf
- 面向網(wǎng)格的Java虛擬機(jī)的任務(wù)調(diào)度.pdf
- 移動(dòng)通信終端的Java虛擬機(jī)優(yōu)化研究.pdf
- 針對(duì)嵌入式系統(tǒng)的Java虛擬機(jī)研究.pdf
- 嵌入式JAVA虛擬機(jī)實(shí)現(xiàn)技術(shù)的研究.pdf
- Java線程狀態(tài)的保存和重構(gòu)—解析和擴(kuò)展Java虛擬機(jī).pdf
- 嵌入式Java虛擬機(jī)的研究與實(shí)踐.pdf
- 嵌入式JAVA虛擬機(jī)的移植與優(yōu)化.pdf
- Java嵌入式虛擬機(jī)的優(yōu)化與研究.pdf
- 移動(dòng)式JAVA虛擬機(jī)的研究及改進(jìn)實(shí)現(xiàn).pdf
- 針對(duì)嵌入式系統(tǒng)的Java虛擬機(jī)的硬件實(shí)現(xiàn).pdf
- JAVA虛擬機(jī)相關(guān)技術(shù)研究與實(shí)踐.pdf
- 基于Dalvik虛擬機(jī)的java指令調(diào)試設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論