ClassLoader筆記
顯示運行時ClassLoader的信息:-verbose:class
dynamic語句塊,在執行構造方法之前執行。每次都會執行




static語句塊,在Class加載后執行一次



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