ClassLoader筆記
顯示運(yùn)行時(shí)ClassLoader的信息:-verbose:class
dynamic語句塊,在執(zhí)行構(gòu)造方法之前執(zhí)行。每次都會(huì)執(zhí)行




static語句塊,在Class加載后執(zhí)行一次



JDK內(nèi)置ClassLoader
bootstrap class loader(啟動(dòng)運(yùn)行的classloader)
implemented by native language
load the core classes of jdk
extesion class loader(擴(kuò)展的classloader)
loader the class from jre/lib/ext
application class loader(運(yùn)用程序的classloader)
load user-define classes
ClassLoader.getSystemClassLoader()
other class loader(其他classloader)
SecureClassLoader
URIClassLoader
啟動(dòng)過程是這樣的:
首先bootstrap class loader把其他的classloader加載進(jìn)來
(extesion class loader ---> application class loader ---> other class loader)
然后其他的classloader再loader其他的class
類加載的機(jī)制
從1.2版本開始,Java引入了雙親委托模型,從而更好的保證Java平臺(tái)的安全。
在此模型下,當(dāng)一個(gè)裝載器被請(qǐng)求裝載某個(gè)類時(shí),
它首先委托自己的parent去裝載,若parent能裝載,則返回這個(gè)類所對(duì)應(yīng)的Class對(duì)象,若parent不能裝載,則由parent的請(qǐng)求者去裝載。
若有一個(gè)能成功裝載,實(shí)際裝載的類裝載器被稱為定義類裝載器,所有能成功返回Class對(duì)象的裝載器(包括定義類裝載器)被稱為初始類裝載器。