• <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视频一级毛片_日本最新免费二区三区

        ×

        虛擬機(jī)中類的加載機(jī)制簡(jiǎn)介

        • 作者:新網(wǎng)
        • 來(lái)源:新網(wǎng)
        • 瀏覽:100
        • 2018-05-04 15:27:03

        虛擬機(jī)把描述類的數(shù)據(jù)從Class文件加載到內(nèi)存,并對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)、轉(zhuǎn)換解析和初始化,最終形成呢個(gè)可以唄虛擬機(jī)直接使用的Java類型,這就是虛擬機(jī)的類加載機(jī)制。

           002UASMrzy7605pjKJv15&690.jpg

        <div>  虛擬機(jī)把描述類的數(shù)據(jù)從Class文件加載到內(nèi)存,并對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)、轉(zhuǎn)換解析和初始化,最終形成呢個(gè)可以唄虛擬機(jī)直接使用的Java類型,這就是虛擬機(jī)的類加載機(jī)制。
          生命周期
          加載、驗(yàn)證、準(zhǔn)備、解析、初始化、使用和卸載
          何時(shí)加載?
          有且只有:
          a.遇到new、getstatic、putstatic或invokestatic這4條字節(jié)碼指令時(shí),如果沒(méi)有初始化,則觸發(fā)起初始化(new 實(shí)例化對(duì)象,讀取或設(shè)置一個(gè)靜態(tài)(final修飾)字段,以及調(diào)用一個(gè)類的靜態(tài)方法)
          b.使用 java.lang.reflect包的方法對(duì)類進(jìn)行反射調(diào)用的時(shí)候,如果類沒(méi)有進(jìn)行初始化,則初始化
          c.當(dāng)初始化一個(gè)類的時(shí)候,如果發(fā)現(xiàn)其父類還沒(méi)進(jìn)行初始化,則初始化
          d.當(dāng)虛擬機(jī)啟動(dòng)時(shí),用戶指定一個(gè)要指定一個(gè)要執(zhí)行的主類,虛擬機(jī)會(huì)先初始化這個(gè)主類
          e.當(dāng)使用1.7的動(dòng)態(tài)語(yǔ)言支持時(shí),如果一個(gè)java.lang.invoke.MethomdHandle實(shí)例最后的解析結(jié)果REF_getStatic、REF_putStatic、Ref_invokeStatic的方法句柄,并且這個(gè)方法句柄所對(duì)應(yīng)的類
          沒(méi)有進(jìn)行過(guò)初始化
          4.類加載過(guò)程
          a).加載
          i).通過(guò)一個(gè)類的全限定名來(lái)獲取定義此類的二進(jìn)制字節(jié)流
          ii).將這個(gè)字節(jié)流所代表的靜態(tài)存儲(chǔ)結(jié)構(gòu)轉(zhuǎn)化為方法去的運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu)。
          iii).在內(nèi)存中生成一個(gè)代表這個(gè)類的Classduixiang,作為方法區(qū)這個(gè)類的各種數(shù)據(jù)的訪問(wèn)入口
          備注:數(shù)組的加載過(guò)程
          i).如果數(shù)組的組件類型是引用類型,那就遞歸加載這個(gè)組件類i系那個(gè),數(shù)組C將在家在該組件類型的類加載器的類名稱空間上被標(biāo)識(shí)
          ii).如果數(shù)組的組件不是引用類型(int[]),jvm將會(huì)把數(shù)組C標(biāo)記為與引導(dǎo)類加載器關(guān)聯(lián)
          iii).數(shù)組類的可見性與它的組建類型的可見性一致,如果組件類型不引用類型,那數(shù)組類的可見性將默認(rèn)為public
          b).驗(yàn)證
          i).文件格式驗(yàn)證
          是否以模數(shù)0xCAFEBABE開頭
          常量池的常量中是否有不被支持的常量類型
          ii).元數(shù)據(jù)驗(yàn)證
          類是否有父類
          類的父類是否繼承了不允許被繼承的類(final修飾)
          若這個(gè)類不是抽象類,是否實(shí)現(xiàn)父類或接口要求實(shí)現(xiàn)的所有函數(shù)
          類中字段、方法是否與父類產(chǎn)生矛盾
          iii).字節(jié)碼驗(yàn)證
          iiii).符號(hào)引用驗(yàn)證
          c).準(zhǔn)備
          是正式為類變量分配內(nèi)存并設(shè)置類變量初始值的階段,這些類變量都將在方法去中進(jìn)行分配。容易混淆的地方:首先這個(gè)時(shí)候進(jìn)行內(nèi)存分配的僅包括類變量,不包括實(shí)例變量,實(shí)例變量將會(huì)在對(duì)象實(shí)例化時(shí)隨著對(duì)象一起分配在java堆中
          d).解析
          是jvm將常量池內(nèi)的符號(hào)引用替換為直接引用的過(guò)程
          i).類或接口的解析
          ii).字段解析
          iii).類方法解析
          iiii).接口方法解析
          e).初始化
          最后一步。初始化是執(zhí)行類構(gòu)造器()方法的過(guò)程。
         

        免責(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>
            淳化县| 甘洛县| 辽源市| 乌审旗| 平安县| 平度市| 兴义市| 九龙城区| 卢氏县| 定边县| 长泰县| 洛南县| 攀枝花市| 梨树县| 靖远县| 福安市| 会东县| 雅江县| 洛隆县| 新竹市| 榆社县| 济宁市| 光山县| 晋江市| 泽州县| 栾城县| 台中市| 嘉义县| 遂昌县| 昂仁县| 鄂尔多斯市| 郓城县| 乡城县| 社旗县| 兴宁市| 天门市| 长白| 长白| 武川县| 姜堰市| 华安县|