資源描述:
《深入研究java的類加載機(jī)制》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、第32卷第2期唐山師范學(xué)院學(xué)報(bào)2010年3月1.32No.2JournalofTangshanTeachersCollegeMar.2010深入研究Java的類加載機(jī)制趙宇,張洪波(唐山師范學(xué)院計(jì)算機(jī)科學(xué)系,河北唐山063000)摘要:Java類的動(dòng)態(tài)裝載機(jī)制是Java虛擬機(jī)的一項(xiàng)核心技術(shù),可以在運(yùn)行時(shí)刻動(dòng)態(tài)地加載或替換系統(tǒng)的某些功能模塊,而不影響系統(tǒng)其它功能模塊的正常運(yùn)行介紹了Java虛擬機(jī)中類的動(dòng)態(tài)裝載機(jī)制的原理、實(shí)現(xiàn)及應(yīng)用,分析了類裝載器的結(jié)構(gòu)、用途,闡述了利用自定義類裝載器裝載并執(zhí)行Java類的過程。關(guān)鍵詞:Java類;動(dòng)態(tài)裝載機(jī)制;Java虛擬機(jī);類裝載器中圖分類號(hào):
2、TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-9115(2010)02-0081-02TheStudyofClassloadingMechanisminsideJavaZHAOYu,ZHANGHong-bo(DepartmentofComputerScience,TangshanTeachersCollege,Tangshan063000,China)Abstract:ThedynamicloadingmechanismofJavaClassisacoretechniqueinsideJavaVirtualMachine.Itcandynamicallyloadingorsubs
3、titutesomesystemfunctionmodules,withoutafectingothersystemmodules.Thispaperintroducedtheprinciples、realizationandapplicationsofdynamicClass2loadingmechanisminsideJavaVirtualMachine.ItalsoanalyzedtheframeandpurposeofClass2loadingmethod.TheprocessloadingandperformingJavaClasswithuser-definedCl
4、assLoaderwasalsoexpatiatedindetail.Keywords:Javaclass;dynamicloadingmechanism;Javavirtualmachine;classloader在許多傳統(tǒng)語言中,程序是作為啟動(dòng)(startup)過程的Java語言是一種具有動(dòng)態(tài)性的解釋型編程語言,當(dāng)指定一部分立刻被加載的。然后是初始化,緊接著程序開始運(yùn)行。程序運(yùn)行的時(shí)候,Java虛擬機(jī)就將編譯生成的.class文件按這些語言的初始化過程必須小心控制,以確保static的初始照需求和一定的規(guī)則加載進(jìn)內(nèi)存,并組織成為一個(gè)完整的化順序不會(huì)造成麻煩。例如,如果某個(gè)s
5、tatic在另一個(gè)staticJava應(yīng)用程序。Java語言把每個(gè)單獨(dú)的類Class和接口被初始化之前就可以被有效地使用,那么C++就會(huì)出現(xiàn)問Implements編譯成單獨(dú)的一個(gè).class文件,這些文件對(duì)于Java題。Java就不會(huì)出現(xiàn)這個(gè)問題,因?yàn)樗捎昧艘环N不同的加運(yùn)行環(huán)境來說就是一個(gè)個(gè)可以動(dòng)態(tài)加載的單元,這些文件只載方式。由于Java中的所有事物都是對(duì)象,所以許多動(dòng)作在需要使用程序代碼時(shí)才會(huì)被加載。正是因?yàn)镴ava的這種就變得更加容易,加載動(dòng)作僅僅是其中之一。每個(gè)類的編譯特性,我們可以在不重新編譯其它代碼的情況下,只編譯需代碼都存在于它自己的獨(dú)立的文件中。要修改的單元,
6、并把修改文件編譯后的.class文件放到Java一般來說,“類的代碼在初次使用時(shí)才加載”這通常是的路徑當(dāng)中,等到下次該Java虛擬機(jī)器重新激活時(shí),這個(gè)指知道類的第一個(gè)對(duì)象被構(gòu)建時(shí)才發(fā)生加載,但是當(dāng)訪問邏輯上的Java應(yīng)用程序就會(huì)因?yàn)榧虞d了新修改的.class文static數(shù)據(jù)成員或是static方法時(shí),也會(huì)發(fā)生加載。初次使用件,自己的功能也做了更新,這就是Java的動(dòng)態(tài)性。之處也是靜態(tài)初始化(static初始化)發(fā)生之處。所有的staticl預(yù)先加載與依需求加載對(duì)象和static代碼段都會(huì)在加載時(shí)依程序中的順序(即定義Java運(yùn)行環(huán)境為了優(yōu)化系統(tǒng),提高程序的執(zhí)行速度,在類時(shí)的書
7、寫順序)依次初始化。當(dāng)然,static只會(huì)被初始化JRE運(yùn)行的開始會(huì)將Java運(yùn)行所需要的基本類采用預(yù)先加一次。載(pre.1oading)的方法全部加載要內(nèi)存當(dāng)中,因?yàn)檫@些單收稿日期:2009.10.27作者簡(jiǎn)介:趙宇(1981.),男,河北唐山人,唐山師范學(xué)院計(jì)算機(jī)科學(xué)系助教,研究方向?yàn)橛?jì)算機(jī)編程。墻l-第32卷第2期唐山師范學(xué)院學(xué)報(bào)2010年3月元在Java程序運(yùn)行的過程當(dāng)中經(jīng)常要使用的,主要包括JRE時(shí)候是否初始化靜態(tài)區(qū),classloader表示加載該類所需的加的rt.jar文件里