成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

類加載器和類的加載過程

baiy / 1654人閱讀

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

類加載器:

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

類加載概述:

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

類加載器的加載機制:

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

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70360.html

相關(guān)文章

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

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

    ChanceWong 評論0 收藏0
  • java加載機制

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

    garfileo 評論0 收藏0
  • JAVA加載機制全解析

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

    tomener 評論0 收藏0
  • JVM 知識點 01

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

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

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

    k00baa 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<