国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java八股文面試[JVM]——雙親委派模型

這篇具有很好參考價(jià)值的文章主要介紹了java八股文面試[JVM]——雙親委派模型。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

java八股文面試[JVM]——雙親委派模型,java八股文,java,面試,jvm

java八股文面試[JVM]——雙親委派模型,java八股文,java,面試,jvm

java八股文面試[JVM]——雙親委派模型,java八股文,java,面試,jvm

java八股文面試[JVM]——雙親委派模型,java八股文,java,面試,jvm

1.當(dāng)AppClassLoader去加載一個(gè)class時(shí),它首先不會(huì)自己去嘗試加載這個(gè)類,而是把類加載請(qǐng)求委托給父加載器ExtClassLoader去完成。
2.當(dāng)ExtClassLoader去加載一個(gè)class時(shí),它首先也不會(huì)去嘗試加載這個(gè)類,而是把類加載請(qǐng)求委托給父加載器BootstrapClassLoader去完成。
3.如果BootstrapClass加載失?。ɡ缭贘AVA_HOME/jre/lib里未找到該class),就會(huì)使用ExtClassLoader來(lái)嘗試加載。
4.如果使用ExtClassLoader加載失?。ɡ缭贘AVA_HOME/jre/lib/ext里未找到該class),就會(huì)使用AppClassLoader來(lái)嘗試加載。如果AppClassLoader也加載失敗,則會(huì)拋出異常ClassNotFoundException。

從代碼層面了解幾個(gè)Java中定義的類加載器及雙親委派模型的實(shí)現(xiàn),他們的類圖關(guān)系如下。

java八股文面試[JVM]——雙親委派模型,java八股文,java,面試,jvm

從圖可以看出頂層的類加載器是抽象類abstract ClassLoader,其后所有的類加載器都繼承自ClassLoader(不包括啟動(dòng)類加載器)。為了更好的理解雙親委派模型,ClassLoader源碼中的loadClass(String)方法該方法加載指定名稱(包括包名)的二進(jìn)制類型,該方法在jdk1.2后不建議用戶重寫但是可以直接調(diào)用該方法。loadClass()方法是ClassLoader類自己實(shí)現(xiàn)的,該方法中的邏輯就是雙親委派模式的實(shí)現(xiàn)。loadClass(String name, boolean resolve)是一個(gè)重載方法,resolve參數(shù)代表是否生成Class對(duì)象的進(jìn)行解析相關(guān)的操作,源碼分析如下。

雙親委派模型意義總結(jié)來(lái)講就是:
1.系統(tǒng)類防止內(nèi)存中出現(xiàn)多份相同的字節(jié)碼。
2.保證Java程序安全穩(wěn)定運(yùn)行。

加載類的三種方式

到這里,相信大家都對(duì)類加載器和類的加載都有一定的了解了,那么你知道嘛?常見的加載類的方式有三種。

  1. 靜態(tài)加載:也就是使用new關(guān)鍵字來(lái)創(chuàng)建實(shí)例對(duì)象,
  2. 動(dòng)態(tài)加載:使用Class.forName()動(dòng)態(tài)加載(反射加載類型),然后調(diào)用類的newInstance()方法實(shí)例化對(duì)象。
  3. 動(dòng)態(tài)加載:通過(guò)類加載器的loadClass()方法來(lái)加載類,然后調(diào)用類的newInstance()方法實(shí)例化對(duì)象。
三種方式的區(qū)別
  1. 第一種和第二種方式使用的類加載器是相同的,都是當(dāng)前類加載器(this.getClass().getClassLoader()),第三種方式需要用戶指定類加載器。
  2. 如果需要在當(dāng)前類路徑以外加載類,則只能使用第三種方式,第三種方式加載的類與當(dāng)前類分屬不同的命名空間。
  3. 第一種方式是靜態(tài)加載,第二種和第三種是動(dòng)態(tài)加載。
兩種異常(Exception)
  1. 靜態(tài)加載的時(shí)候如果在運(yùn)行環(huán)境中找不到要初始化的類,拋出的是NoClassDefFoundError。它在Java的異常體系中是一個(gè)error。
  2. 動(dòng)態(tài)加載的時(shí)候如果運(yùn)行環(huán)境中找不到要初始化的類,拋出的是ClassNotFoundException。它在Java的異常體系中是一個(gè)checked異常。
Class.forName與ClassLoader.loadClass的區(qū)別

首先,我們必須要明白類加載機(jī)制的三個(gè)主要過(guò)程是:加載–>連接–>初始化。

  • Class.forName():除了將類的.class文件加載到JVM中之外,還對(duì)類進(jìn)行解釋,執(zhí)行類中的static塊。
  • ClassLoder.loadClass():只是將類的.class文件加載到JVM中,并不會(huì)執(zhí)行類的static塊,只有在newInstance時(shí)才會(huì)執(zhí)行static塊。
  • Class.forName(name, initialize, loader):帶參函數(shù)也可控制是否加載static塊。并且只有調(diào)用了newInstance()方法采用調(diào)用構(gòu)造函數(shù)。創(chuàng)建類的對(duì)象 。

下面我們寫下代碼,加深一下影響。

public class Demo {
    static {
        System.out.println("正在加載Demo...");
    }
}
import java.lang.Class;

public class TestDemo {
    public static void main(String[] args) throws ClassNotFoundException {
        //1.使用 Class.forName()加載類,默認(rèn)執(zhí)行static塊。
        Class.forName("Demo");
        //獲得當(dāng)前類的類加載器
        ClassLoader classLoader = Test.class.getClassLoader();
        //2.使用 Class.forName()加載類,并指定ClassLoader。初始化時(shí)不會(huì)執(zhí)行static塊。
        Class.forName("Demo", false, classLoader);
        //3.使用ClassLoader類的loadClass()方法加載類,不會(huì)執(zhí)行初始化
        classLoader.loadClass("Demo");
    }
}

只有第一行代碼輸出了

java八股文面試[JVM]——雙親委派模型,java八股文,java,面試,jvm

知識(shí)來(lái)源:

【基礎(chǔ)】雙親委派模型_嗶哩嗶哩_bilibili

深入理解Java類加載器(ClassLoader)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-673241.html

到了這里,關(guān)于java八股文面試[JVM]——雙親委派模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java面試八股文_虛擬機(jī)篇(jvm)

    java面試八股文_虛擬機(jī)篇(jvm)

    要求 掌握 JVM 內(nèi)存結(jié)構(gòu)劃分 尤其要知道方法區(qū)、永久代、元空間的關(guān)系 結(jié)合一段 java 代碼的執(zhí)行理解內(nèi)存劃分 執(zhí)行 javac 命令編譯 源代碼(java Source) 為 字節(jié)碼 執(zhí)行 java 命令 創(chuàng)建 JVM,調(diào)用類加載子系統(tǒng)加載 class,將類的信息存入 方法區(qū) 創(chuàng)建 main 線程,使用的內(nèi)存區(qū)域是 J

    2023年04月08日
    瀏覽(15)
  • java八股文面試[JVM]——垃圾回收器

    java八股文面試[JVM]——垃圾回收器

    jvm結(jié)構(gòu)總結(jié) ? 常見的垃圾回收器有哪些? ? ? CMS(Concurrent Mark Sweep) 整堆收集器 : G1 由于整個(gè)過(guò)程中 耗時(shí)最長(zhǎng) 的 并發(fā)標(biāo)記 和 并發(fā)清除 過(guò)程中,收集器線程都可以與用戶線程一起工作,所以 總體上來(lái)說(shuō) ,CMS收集器的內(nèi)存回收過(guò)程是與用戶線程一起并發(fā)地執(zhí)行。老年代收

    2024年02月11日
    瀏覽(30)
  • 一天吃透JVM面試八股文

    JVM,全稱Java Virtual Machine(Java虛擬機(jī)),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。由 一套字節(jié)碼指令集、一組寄存器、一個(gè)棧、一個(gè)垃圾回收堆和一個(gè)存儲(chǔ)方法域等 組成。JVM屏蔽了與操作系統(tǒng)平臺(tái)相關(guān)的信息,使得Java程序只需要生成在Java虛擬機(jī)上運(yùn)行的

    2023年04月19日
    瀏覽(30)
  • 【java八股文】之JVM基礎(chǔ)篇

    【java八股文】之JVM基礎(chǔ)篇

    【java八股文】之JVM基礎(chǔ)篇-CSDN博客 【java八股文】之MYSQL基礎(chǔ)篇-CSDN博客 【java八股文】之Redis基礎(chǔ)篇-CSDN博客 【java八股文】之Spring系列篇-CSDN博客 【java八股文】之分布式系列篇-CSDN博客 【java八股文】之多線程篇-CSDN博客 【java八股文】之JVM基礎(chǔ)篇-CSDN博客 【java八股文】之計(jì)算

    2024年01月17日
    瀏覽(70)
  • 算法面試八股文『 模型詳解篇 』

    算法面試八股文『 模型詳解篇 』

    這是本系列的第二篇博客,主要是整理了一些經(jīng)典模型的原理和結(jié)構(gòu),面試有時(shí)候也會(huì)問(wèn)到這些模型的細(xì)節(jié),因此都是需要十分熟悉的。光看原理還不夠,最好是能用代碼試著復(fù)現(xiàn),可以看看李沐老師深度學(xué)習(xí)的教材,我也有參考部分沐神的思想。 LeNet5有3個(gè)卷積層,2個(gè)池化

    2024年02月21日
    瀏覽(25)
  • Java 面試八股文

    參考: 2023年 Java 面試八股文(20w字)_json解析失敗_leader_song的博客-CSDN博客

    2024年02月13日
    瀏覽(26)
  • Java面試必備八股文

    Java面試必備八股文

    1.1)Java有哪幾種數(shù)據(jù)類型 基本數(shù)據(jù)類型:byte(1字節(jié)) short(2字節(jié)) int(4字節(jié)) long(8字節(jié)) float(4字節(jié)) double(8字節(jié)) char(2字節(jié)) boolean(1字節(jié)) 引用數(shù)據(jù)類型:String 類 接口 抽象類 枚舉 數(shù)組 1.2)JVM、JRE和JDK的關(guān)系 JVM指的是Java的虛擬機(jī),Java程序需要運(yùn)行在虛擬機(jī)上

    2023年04月08日
    瀏覽(35)
  • Java面試八股文寶典:序言

    Java作為一門廣泛應(yīng)用于企業(yè)級(jí)應(yīng)用開發(fā)的編程語(yǔ)言,一直以來(lái)都是技術(shù)面試中的重要話題。無(wú)論您是剛剛踏入編程世界的新手,還是經(jīng)驗(yàn)豐富的Java開發(fā)工程師,都需要通過(guò)面試來(lái)展示自己的技能和知識(shí)。 在面試中,除了技術(shù)知識(shí),還需要展現(xiàn)出解決問(wèn)題、溝通能力和編程實(shí)

    2024年02月09日
    瀏覽(38)
  • 【八股文篇】Java 面試題

    【八股文篇】Java 面試題

    ?? 博主介紹 : 博主從事應(yīng)用安全和大數(shù)據(jù)領(lǐng)域,有8年研發(fā)經(jīng)驗(yàn),5年面試官經(jīng)驗(yàn),Java技術(shù)專家,WEB架構(gòu)師,阿里云專家博主,華為云云享專家,51CTO TOP紅人 Java知識(shí)圖譜點(diǎn)擊鏈接: 體系化學(xué)習(xí)Java(Java面試專題) ???? 感興趣的同學(xué)可以收藏關(guān)注下 , 不然下次找不到喲

    2024年02月12日
    瀏覽(26)
  • 一天吃透Java面試八股文

    一天吃透Java面試八股文

    Java是一門面向?qū)ο蟮木幊陶Z(yǔ)言 。面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別參考下一個(gè)問(wèn)題。 Java具有平臺(tái)獨(dú)立性和移植性 。 Java有一句口號(hào): Write once, run anywhere ,一次編寫、到處運(yùn)行。這也是Java的魅力所在。而實(shí)現(xiàn)這種特性的正是Java虛擬機(jī)JVM。已編譯的Java程序可以在任何帶有JVM的平臺(tái)

    2024年02月05日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包