国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

類加載器和類的加載過程

baiy / 1645人閱讀

摘要:只有當(dāng)父加載器無法完成加載的時(shí)候,子加載器才會(huì)嘗試自己加載。破壞雙親委托機(jī)制實(shí)現(xiàn)熱部署

類加載器:

負(fù)責(zé)將生成的.class文件加載到內(nèi)存中,并生成對(duì)應(yīng)的Class對(duì)象
三種類加載器:
    BootStrapClassLoader:引導(dǎo)類加載器,負(fù)責(zé)java核心類的加載
    ExtensionClassLoader: 擴(kuò)展類加載器
    AppClassLoader:應(yīng)用類加載器    負(fù)責(zé)加載我們寫的一些類

類加載概述:

當(dāng)程序要使用某個(gè)類的時(shí)候,如果該類還沒有被加載到內(nèi)存中,
系統(tǒng)會(huì)通過加載、連接和初始化三步來實(shí)現(xiàn)對(duì)該類的初始化。
    加載:將class文件中的二進(jìn)制數(shù)據(jù)數(shù)據(jù)讀入到內(nèi)存中,
    然后將該字節(jié)流所代表的靜態(tài)存儲(chǔ)結(jié)構(gòu)轉(zhuǎn)換為方法區(qū)中運(yùn)行的數(shù)據(jù)結(jié)構(gòu),
    最終創(chuàng)建一個(gè)Class對(duì)象,任何類使用時(shí)系統(tǒng)都會(huì)創(chuàng)建該類的Class對(duì)象
連接:
    驗(yàn)證:確保class文件中字節(jié)流包含的信息符合當(dāng)前虛擬機(jī)的要求
        文件格式的驗(yàn)證:驗(yàn)證是否符合Class文件格式的規(guī)范
        元數(shù)據(jù)的驗(yàn)證:對(duì)字節(jié)碼描述的信息進(jìn)行語法校驗(yàn)
        字節(jié)碼驗(yàn)證:驗(yàn)證程序的控制流程
        符號(hào)引用驗(yàn)證:發(fā)生在虛擬機(jī)將二進(jìn)制符號(hào)轉(zhuǎn)換為直接引用的時(shí)候 
    準(zhǔn)備:為類變量分配內(nèi)存并設(shè)置初始值。這些變量使用的內(nèi)存都在方法區(qū)中分配。        
        這時(shí)候分配的內(nèi)存僅包括類變量(靜態(tài)變量),實(shí)例變量會(huì)在對(duì)象實(shí)例化的時(shí)候        
        隨著對(duì)象一起分配在堆內(nèi)存中
    解析:將二進(jìn)制符號(hào)的引用替換為直接引用
    初始化:父類靜態(tài)(靜態(tài)的成員變量,靜態(tài)代碼塊),
        子類靜態(tài)(子類靜態(tài)成員變量,子類的靜態(tài)代碼塊)
        父類非靜態(tài)(非靜態(tài)成員變量,構(gòu)造代碼塊,構(gòu)造函數(shù))
        子類非靜態(tài)(子類非靜態(tài)成員變量,子類構(gòu)造代碼塊,子類構(gòu)造函數(shù))
    

靜態(tài)語句塊只能訪問定義到靜態(tài)語句塊之前的變量,定義在之后的變量,只能夠賦值,不能夠訪問

static{
    num = 100;
    System.out.println(num);//編譯不通過
}
private static int num = 10;
    

類加載器的加載機(jī)制:

雙親委托機(jī)制
當(dāng)一個(gè)類加載器調(diào)用loadClass之后,并不會(huì)直接加載,
而是先交給當(dāng)前類加載器的父加載器加載,直到最頂層的父加載器。
只有當(dāng)父加載器無法完成加載的時(shí)候,子加載器才會(huì)嘗試自己加載。
破壞雙親委托機(jī)制:實(shí)現(xiàn)熱部署

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70360.html

相關(guān)文章

  • 樂字節(jié)Java反射之三:方法、數(shù)組、加載器和的生命周期

    摘要:本文承接上一篇樂字節(jié)發(fā)射之二實(shí)例化對(duì)象接口與父類修飾符和屬性繼續(xù)講述反射之三方法數(shù)組類加載器一方法獲取所有方法包括父類或接口,使用即可。當(dāng)沒有任何引用指向?qū)ο髸r(shí)就會(huì)被卸載,結(jié)束類的生命周期。 本文承接上一篇:樂字節(jié)Java發(fā)射之二:實(shí)例化對(duì)象、接口與父類、修飾符和屬性 繼續(xù)講述Java反射之三:方法、數(shù)組、類加載器 一、方法 獲取所有方法(包括父類或接口),使用Method即可。sho...

    ChanceWong 評(píng)論0 收藏0
  • java加載機(jī)制

    摘要:在加載階段,虛擬機(jī)要完成件事情通過一個(gè)類的全限定名來獲取定義此類的二進(jìn)制字節(jié)流。前面的階段中,除了加載的時(shí)候,可以由用戶指定自定義類加載器之外,別的都是由虛擬機(jī)主導(dǎo)控制。 java類加載機(jī)制 代碼編譯的結(jié)果從本地機(jī)器碼轉(zhuǎn)變?yōu)樽止?jié)碼,是存儲(chǔ)格式發(fā)展的一小步,確實(shí)編程語言發(fā)展的一大步 虛擬機(jī)把描述類的數(shù)據(jù)從class文件加載到內(nèi)存,并對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)、轉(zhuǎn)換解析和初始化,最終形成可以被虛擬機(jī)直...

    garfileo 評(píng)論0 收藏0
  • JAVA加載機(jī)制全解析

    摘要:當(dāng)程序使用某個(gè)類時(shí),如果該類還沒被初始化,加載到內(nèi)存中,則系統(tǒng)會(huì)通過加載連接初始化三個(gè)過程來對(duì)該類進(jìn)行初始化。一旦一個(gè)類被加載到中之后,就不會(huì)再次載入了。它既可以從本地文件系統(tǒng)獲取二進(jìn)制文件來加載類,也可以遠(yuǎn)程主機(jī)獲取二進(jìn)制文件來加載類。 當(dāng)程序使用某個(gè)類時(shí),如果該類還沒被初始化,加載到內(nèi)存中,則系統(tǒng)會(huì)通過加載、連接、初始化三個(gè)過程來對(duì)該類進(jìn)行初始化。該過程就被稱為類的初始化 類加載 ...

    tomener 評(píng)論0 收藏0
  • JVM 知識(shí)點(diǎn) 01

    摘要:新生代又被劃分為三個(gè)區(qū)域和兩個(gè)幸存區(qū)。這樣劃分的目的是為了使能夠更好地管理堆內(nèi)存中的對(duì)象,包括內(nèi)存的分配及回收。新生代主要存儲(chǔ)新創(chuàng)建的對(duì)象和尚未進(jìn)入老年代的對(duì)象。 在Java中主要有以下三種類加載器: 引導(dǎo)類加載器(bootstrap class loader) --用來加載java的核心庫(Strin...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • 虛擬機(jī)加載機(jī)制

    摘要:加載階段在類的加載階段,虛擬機(jī)需要完成以下件事情通過一個(gè)類的全限定名來獲取定義此類的二進(jìn)制字節(jié)流。驗(yàn)證階段驗(yàn)證是連接階段的第一步,這一階段的目的是為了確保文件的字節(jié)流中包含的信息符合當(dāng)前虛擬機(jī)的要求,并且不會(huì)危害虛擬機(jī)自身的安全。 注:本篇文章中的內(nèi)容是根據(jù)《深入理解Java虛擬機(jī)--JVM高級(jí)特性與最佳實(shí)踐》而總結(jié)的,如有理解錯(cuò)誤,歡迎大家指正! 虛擬機(jī)把描述類的數(shù)據(jù)從Class文件...

    k00baa 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<