java的類裝載方式,有兩種:
1.隐式裝載,程式在運作過程中當碰到通過new等方式生成對象時,隐式調用類裝載器加載到對應的類型jvm中。
2.顯式裝載,通過class.forName()等方法,顯式加載需要的類。
類加載的動态性展現:
一個應用程式是有n多個類組成的,java程式啟動時,并不是一次性加載完所有的程式,而是先把能保證程式啟動的基礎類加載一次性加載到jvm中,其他的類等需要的時候才會放到jvm。這樣的好處是節省了記憶體的開銷,因為java最早就是為了嵌入式系統而設計的,記憶體寶貴。是以用到再加載是java動态性的一種展現。
java類的加載器:
JDK預設了三種加載器ClassLoader:
BootStrapClassLoader:所有加載器的父類,是jvm的一部分,用c++編寫的,加載的是 java_home/jre/lib 目錄中的類庫
extensionClassLoader:是父類加載器的子類,會加載 java_home/jre/lib/ext 目錄中的類庫以及
java.ext.dirs
系統變量指定的路徑中類庫。
applicationClassLoader:加載 classPath 下的所有類
定義類加載器:
1、 繼承java.lang.ClassLoader
2、 重寫父類的findClass方法