国产精品无码一区二区三区太,亚洲一线产区二线产区区别,欧美A区,人妻jealousvue人妻

×

Java虛擬機(jī):類加載機(jī)制

  • 作者:新網(wǎng)
  • 來源:新網(wǎng)
  • 瀏覽:100
  • 2018-04-28 17:02:56

類從被加載到虛擬機(jī)內(nèi)存中開始,到卸載出內(nèi)存為止,它的整個生命周期包括:加載、驗(yàn)證、準(zhǔn)備、解析、初始化、使用和卸載七個階段。

   e00c748961694695f6aaa7daa28f61f0.jpg  

<div>  類從被加載到虛擬機(jī)內(nèi)存中開始,到卸載出內(nèi)存為止,它的整個生命周期包括:加載、驗(yàn)證、準(zhǔn)備、解析、初始化、使用和卸載七個階段。
  加載時機(jī):
  并不是所有的類在程序啟動時即被加載,為提升效率,虛擬機(jī)通常秉承的是按需加載的原則,即需要使用到相應(yīng)的類時才加載對應(yīng)的類。具體包括如下幾個加載時機(jī):
  遇到new、getstatic、putstatic、invokestatic這4條指令時,如果對應(yīng)的類沒有被加載,虛擬機(jī)會首先加載對應(yīng)的類。這4條指令對應(yīng)的場景是:
  創(chuàng)建一個實(shí)例對象
  訪問一個類的靜態(tài)變量(注意:不包括被final修飾,在編譯時已被放入常量池的變量)
  執(zhí)行一個類的靜態(tài)方法
  其中類加載的過程包括了加載、驗(yàn)證、準(zhǔn)備、解析、初始化五個階段。在這五個階段中,加載、驗(yàn)證、準(zhǔn)備和初始化這四個階段發(fā)生的順序是確定的,而解析階段則不一定,它在某些情況下可以在初始化階段之后開始,這是為了支持Java語言的運(yùn)行時綁定(也成為動態(tài)綁定或晚期綁定)。另外注意這里的幾個階段是按順序開始,而不是按順序進(jìn)行或完成,因?yàn)檫@些階段通常都是互相交叉地混合進(jìn)行的,通常在一個階段執(zhí)行的過程中調(diào)用或激活另一個階段。
  類加載器
  (1)Bootstrap ClassLoader:用于加載/lib路徑下的類。主要加載JVM自身工作需要的類,完全由JVM自己控制,這個類不遵守雙親委派加載機(jī)制,它僅僅是一個類的加載工具,既沒有父加載器也沒有子加載器。
  (2)ExtClassLoader:用于加載/lib/ext路徑下的類。這個類本身是JVM自身的一部分,但不是由JVM自身實(shí)現(xiàn)的,服務(wù)的特定目標(biāo)在java.ext.dirs目錄下的類
  (3)AppClassLoader:這個類服務(wù)java.class.path目錄下的類,即classpath路徑。
  如果有需要,開發(fā)人員還可以加入自定義的類加載器。如果我們要實(shí)現(xiàn)自己的類加載器,不管是直接繼承ClassLoader還是繼承URLclassLoaderlei ,它的父加載器都是AppClassLoader,因?yàn)椴还苷{(diào)用哪個父類構(gòu)造器,創(chuàng)建的對象都必須最終調(diào)用getSystemClassLoader()作為父類加載器,而該方法獲取的正是AppClassLoader。
  如果應(yīng)用中沒有定義其他的類加載器,那么除了java.ext.dirs下的類是由ExtClassLoader來加載,其他的都是由AppClassLoader來加載。
  既然存在如此多的類加載器,那么當(dāng)一個類需要加載時,具體是由那個類進(jìn)行加載呢?由于所有的類加載器都遵守“雙親委派模型”,所以虛擬機(jī)在運(yùn)行期間可以保證一個類只會被加載一次。
  雙親委派模型
  雙親委派模型的工作過程:如果一個類加載器收到了類加載的請求,它會把這個請求交給自己的父類加載器去完成,父類加載器也會繼續(xù)上自己的父類加載器發(fā)送請求,依次類推。如果父類已經(jīng)加載過該類,則當(dāng)前加載器會直接返回已加載的類,只有當(dāng)父類沒有加載過該類時,當(dāng)前類加載器才會真正去加載該類。
 

免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)送郵件至:operations@xinnet.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

免費(fèi)咨詢獲取折扣

Loading