• <samp id="mz5ne"><acronym id="mz5ne"></acronym></samp>
      <ol id="mz5ne"></ol>
    1. <samp id="mz5ne"></samp>
      <mark id="mz5ne"></mark>

        <fieldset id="mz5ne"></fieldset>

        免费看又黄又无码的网站_久久久高清国产免费观看_亚洲一区二区三区在线免费观看_免费欧洲美女a视频一级毛片_日本最新免费二区三区

        ×

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

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

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

           1429602343456567.png

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

            <fieldset id="mz5ne"></fieldset>
            光泽县| 松溪县| 铜川市| 襄樊市| 务川| 黑河市| 佛坪县| 漯河市| 平陆县| 驻马店市| 盈江县| 孟州市| 石阡县| 海淀区| 光泽县| 奎屯市| 托克逊县| 玛曲县| 玉门市| 同仁县| 望都县| 琼海市| 平潭县| 河池市| 双柏县| 上高县| 皋兰县| 梁平县| 四子王旗| 新乐市| 南充市| 视频| 铜川市| 准格尔旗| 郓城县| 石屏县| 湖北省| 安仁县| 北流市| 锡林郭勒盟| 水富县|