99插插插,亚洲伦理中文在线,站长推荐一二三区欧美,青青草在线导航

×

Java 虛擬機(jī)類(lèi)加載器詳解

  • 作者:新網(wǎng)
  • 來(lái)源:新網(wǎng)
  • 瀏覽:100
  • 2018-05-03 17:53:24

我們編寫(xiě)好的Java程序都是由若干個(gè)class文件組織而成。當(dāng)我們程序運(yùn)行時(shí),會(huì)調(diào)用該程序的一個(gè)入口函數(shù)來(lái)執(zhí)行程序功能,而這些功能是封裝在不同的class文件中的,所以就常常會(huì)從這個(gè)class文件調(diào)用另一個(gè)class文件中的方法。如果另外一個(gè)class文件不存在,就會(huì)引發(fā)系統(tǒng)異常。

   1429602343456567.png

<div>  我們編寫(xiě)好的Java程序都是由若干個(gè)class文件組織而成。當(dāng)我們程序運(yùn)行時(shí),會(huì)調(diào)用該程序的一個(gè)入口函數(shù)來(lái)執(zhí)行程序功能,而這些功能是封裝在不同的class文件中的,所以就常常會(huì)從這個(gè)class文件調(diào)用另一個(gè)class文件中的方法。如果另外一個(gè)class文件不存在,就會(huì)引發(fā)系統(tǒng)異常。
  程序在啟動(dòng)時(shí),絕對(duì)不會(huì)加載程序需要的所有class文件,而是根據(jù)程序需要,通過(guò)Java的類(lèi)加載機(jī)制來(lái)動(dòng)態(tài)地加載某一個(gè)class文件到內(nèi)存當(dāng)中。
  類(lèi)加載器在Java中非常重要,下面從如下幾個(gè)方面來(lái)進(jìn)行講解。
  二、什么是類(lèi)加載器?
  ClassLoader就是用來(lái)動(dòng)態(tài)加載class文件到內(nèi)存當(dāng)中的。
  三、類(lèi)加載器的類(lèi)型
  1、從開(kāi)發(fā)者角度劃分:
  (1)BootStrap ClassLoader
  啟動(dòng)類(lèi)的加載器,負(fù)責(zé)加載放在JDK中l(wèi)i目錄下的文件。
  (2)Extension ClassLoader
  擴(kuò)展類(lèi)的加載器,負(fù)責(zé)加載JRE中ext目錄下的文件。
  (3)App ClassLoader
  應(yīng)用程序類(lèi)加載器,負(fù)責(zé)加載用戶路徑下指定的類(lèi)。
  2、從虛擬機(jī)角度劃分:
  (1)啟動(dòng)類(lèi)加載器(C++語(yǔ)言實(shí)現(xiàn))
  (2)所有其他類(lèi)加載器(Java語(yǔ)言實(shí)現(xiàn))
  四、雙親委派模型
  每一層類(lèi)加載器上方的類(lèi)加載器叫作父類(lèi)加載器。它們之間的父子關(guān)系不是通過(guò)繼承來(lái)實(shí)現(xiàn)的,而是使用組合關(guān)系來(lái)復(fù)用父類(lèi)加載器中的代碼。
  當(dāng)類(lèi)加載器需要加載一個(gè)class文件時(shí),首先先請(qǐng)求父類(lèi)加載器去加載,只有當(dāng)所有父類(lèi)加載器沒(méi)有找到對(duì)應(yīng)的類(lèi)時(shí),才會(huì)自己去加載。
  雙親委派模型對(duì)于保護(hù)Java程序的穩(wěn)定性非常重要。
  五、類(lèi)加載過(guò)程(加載-->卸載)
  1、靜態(tài)綁定、動(dòng)態(tài)綁定
  2、第一步:加載
  (1)通過(guò)一個(gè)類(lèi)的全限定名來(lái)獲取其定義的二進(jìn)制字節(jié)流
  (2)將這個(gè)字節(jié)流所代表的靜態(tài)存儲(chǔ)結(jié)構(gòu)轉(zhuǎn)化為方法區(qū)的運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu)
  (3)在Java堆中生成一個(gè)代表這個(gè)類(lèi)的lang.lang.Class對(duì)象,作為對(duì)方法區(qū)中的這些數(shù)據(jù)的訪問(wèn)入口
  3、第二步:驗(yàn)證
  為了確保class文件中的字節(jié)流包含的信息符合當(dāng)前虛擬機(jī)的要求
  4、第三步:準(zhǔn)備
  正式為類(lèi)變量分配內(nèi)存,并設(shè)置類(lèi)變量初始化。
  這些內(nèi)存是在方法區(qū)中分配的。
  (1)同時(shí)被static和final修飾的變量必須在聲明的時(shí)候就賦值
  (2)數(shù)組初始化時(shí),默認(rèn)值為null,其中元素也被相應(yīng)賦上默認(rèn)值
  5、第四步:解析
  6、第五步:初始化
  執(zhí)行類(lèi)構(gòu)造方法的過(guò)程(注意:成員變量初始化在準(zhǔn)備階段就完成了
 

免責(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)容,請(qǐng)發(fā)送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

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

Loading
伊大麻豆二区| 九色国产精品| 久久精品免费视频999| 成人福利一区福利二区| 青青操青青碰欧美熟女视频| 精品秘 一区二三区在线男奴| 自拍亚洲一区| 丝袜少妇被我操到高潮了| 欧美性爱老湿机在线| 黄色成人Dv| 黃色片久久| 青青草国产201| 久久密一区| 人妻素人在线视频| 亚洲国产一区第一页| 日韩无码噜噜片| 亚洲自拍偷拍在线点播| 亚洲 精品 综合 精品 自拍| 少妞高潮久久久| 少妇人妻被弄不行| 日本啪啪一区二| 岛国不卡一区免费视频| 桃有码一区二| 国产精品 校园春色| 湖州天气| 亚洲影院久久久久久久| 图片区 亚洲无码| 呦呦com| 精品国产一| 黄色激情综合在线| 青青av综合网| 少妇久久久诱惑| 一色一伦一区二区三区麻豆| 免费中文无码偷拍。| av 蜜臀 久久| 操日本美女网站| 人妻日韩视频| 亚洲午夜福利视频院| 午夜n男女福利在线免费观看视频| 中文人妻字幕久久久久久久久| 久久久久久夜视频|