摘要:面試題類加載器類加載器源代碼文件通過編譯成字節(jié)碼文件后,需要被加載到虛擬機(jī)的內(nèi)存空間中使用,這個(gè)過程就是類加載。該類加載器在此目錄里面查找并加載類。每一個(gè)類加載器都有一個(gè)父裝載器。引導(dǎo)類加載器處理完成后,把剩下的給擴(kuò)展類加載器。
面試題:類加載器 1. Java類加載器
Java源代碼.java文件通過編譯成字節(jié)碼.class文件后,需要被加載到Java虛擬機(jī)的內(nèi)存空間中使用,這個(gè)過程就是類加載。類加載依靠的是Java類加載器
Java類加載器是Java運(yùn)行時(shí)環(huán)境的一部分,負(fù)責(zé)動(dòng)態(tài)加載Java類到Java虛擬機(jī)的內(nèi)存空間中。類通常是按需加載的,即第一次使用該類時(shí)才加載。由于有了類加載器,Java運(yùn)行時(shí)系統(tǒng)不需要知道文件的位置與文件系統(tǒng)。
2. JVM的3個(gè)默認(rèn)類加載器引導(dǎo)(Bootstrap)類加載器。由原生代碼C語言編寫,不繼承java.lang.ClassLoader。負(fù)責(zé)加載核心Java庫,存儲(chǔ)在
擴(kuò)展(Extensions)類加載器。用來在指明的目錄中加載Java的擴(kuò)展類。Java虛擬機(jī)的實(shí)現(xiàn)會(huì)提供一個(gè)擴(kuò)展庫目錄。該類加載器在此目錄里面查找并加載Java類。該類由sun.misc.Launcher$ExtClassLoader實(shí)現(xiàn)。
Apps類加載器(也稱系統(tǒng)類加載器)。根據(jù)Java應(yīng)用程序的類路徑來加載Java類。一般來說,Java應(yīng)用程序的類都是由它來完成加載的,可以通過ClassLoader.getSystemClassLoader()來獲取它。該類由sun.misc.Launcher$AppClassLoader來實(shí)現(xiàn)。
每一個(gè)類加載器都有一個(gè)父裝載器(parent class loader)。
3. 如何保證一個(gè)類被加載一次全盤負(fù)責(zé)委托機(jī)制
解釋:當(dāng)一個(gè)ClassLoader加載一個(gè)Class的時(shí)候,這個(gè)Class所依賴的和引用的其他Class通常也是由這個(gè)classloader負(fù)責(zé)載入的。例如加載一個(gè)普通的Demo類,Apps類加載器首先拿到這個(gè)類的class文件,先讓parent(父)類加載器也就是擴(kuò)展(Extensions)類加載器處理。擴(kuò)展(Extensions)類加載器拿到class文件后同樣先讓parent(父)類加載器處理,也就是引導(dǎo)(Bootstrap)類加載器會(huì)先處理屬于它應(yīng)該加載的部分。引導(dǎo)類加載器處理完成后,把剩下的給擴(kuò)展類加載器。擴(kuò)展類加載器處理屬于它的內(nèi)容,將剩下的部分交給Apps類加載器,Apps類加載器會(huì)加載剩下的全部內(nèi)容。
每個(gè)類加載器只會(huì)加載自己負(fù)責(zé)的部分。
這樣每個(gè)類只會(huì)被加載一次。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/74265.html
摘要:為什么不是面向?qū)ο蟛皇敲嫦驅(qū)ο?,因?yàn)樗瑐€(gè)原始數(shù)據(jù)類型,例如。自定義類加載器繼承的自定義類加載器??梢韵裣旅孢@樣指定參數(shù)面試題面向?qū)ο螅惣虞d器,基礎(chǔ)概念它們的關(guān)系如下啟動(dòng)類加載器,實(shí)現(xiàn),沒有父類。自定義類加載器,父類加載器為。 1. 為什么說Java是一門平臺(tái)無關(guān)語言? 平臺(tái)無關(guān)實(shí)際的含義是一次編寫到處運(yùn)行。Java 能夠做到是因?yàn)樗淖止?jié)碼(byte code)可以運(yùn)行在任何操作...
摘要:為什么不是面向?qū)ο蟛皇敲嫦驅(qū)ο?,因?yàn)樗瑐€(gè)原始數(shù)據(jù)類型,例如。自定義類加載器繼承的自定義類加載器??梢韵裣旅孢@樣指定參數(shù)面試題面向?qū)ο?,類加載器,基礎(chǔ)概念它們的關(guān)系如下啟動(dòng)類加載器,實(shí)現(xiàn),沒有父類。自定義類加載器,父類加載器為。 1. 為什么說Java是一門平臺(tái)無關(guān)語言? 平臺(tái)無關(guān)實(shí)際的含義是一次編寫到處運(yùn)行。Java 能夠做到是因?yàn)樗淖止?jié)碼(byte code)可以運(yùn)行在任何操作...
閱讀 1945·2023-04-26 00:59
閱讀 3213·2021-11-15 18:10
閱讀 3150·2021-09-22 16:02
閱讀 833·2021-09-02 15:15
閱讀 3797·2019-08-30 15:56
閱讀 1977·2019-08-30 15:54
閱讀 2931·2019-08-29 16:31
閱讀 2107·2019-08-29 16:10