亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

類加載器和類的加載過程

baiy / 1695人閱讀

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

類加載器:

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

類加載概述:

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

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

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

類加載器的加載機制:

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

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

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/70360.html

相關文章

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

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

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

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

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

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

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

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

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

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

    k00baa 評論0 收藏0

發(fā)表評論

0條評論

baiy

|高級講師

TA的文章

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