java classloader是什么,讓我們一起了解一下?
ClassLoader就是用來(lái)動(dòng)態(tài)加載class文件到內(nèi)存當(dāng)中用的,通過(guò)Java的類加載機(jī)制來(lái)動(dòng)態(tài)加載某個(gè)class文件到內(nèi)存當(dāng)中的,從而只有class文件被載入到了內(nèi)存之后,才能被其它c(diǎn)lass所引用。
classloader(類加載器)的主要工作是什么?
就是把類文件加載到JVM中。
1、加載:定位要加載的類文件,并將其字節(jié)流裝載到JVM中。
2、鏈接:給要加載的類分配最基本的內(nèi)存結(jié)構(gòu)保存其信息,比如屬性,方法以及引用的類。
在該階段,該類還處于不可用狀態(tài)。
(1)驗(yàn)證:對(duì)加載的字節(jié)流進(jìn)行驗(yàn)證,比如格式上的,安全方面的。
(2)內(nèi)存分配:為該類準(zhǔn)備內(nèi)存空間來(lái)表示其屬性,方法以及引用的類。
(3)解析:加載該類所引用的其它類,比如父類,實(shí)現(xiàn)的接口等。
3、初始化:對(duì)類變量進(jìn)行賦值。
那么類加載器是如何實(shí)現(xiàn)的?
當(dāng)JVM(Java虛擬機(jī))啟動(dòng)時(shí),會(huì)形成由三個(gè)類加載器組成的初始類加載器層次結(jié)構(gòu):
bootstrap?classloader??????????? ?extension?classloader???? ??system?classloader
bootstrap classloader -引導(dǎo)(也稱為原始)類加載器,它負(fù)責(zé)加載Java的核心類。在Sun的JVM中,在執(zhí)行java的命令中使用-Xbootclasspath選項(xiàng)指定附加的類。這個(gè)加載器的是非常特殊的,它實(shí)際上不是 java.lang.ClassLoader的子類,而是由JVM自身實(shí)現(xiàn)的。大家可以通過(guò)執(zhí)行以下代碼來(lái)獲得bootstrap classloader加載了那些核心類庫(kù):
URL[]?urls=sun.misc.Launcher.getBootstrapClassPath().getURLs(); ???for?(int?i?=?0;?i?以上就是小編今天的分享了,希望可以幫助到大家。