java類加載過程
- 裝載 把class字節碼加載到內存中。
- 連接 驗證、準備、解析
- 初始化 類的靜態變量、靜態代碼庫進行初始化
類加載器
java中三個默認類加載器java
- Bootstrap ClassLoader 根加載器,加載JAVA_HOME/jre/lib下的rt.jar等核心jar
- Extension ClassLoader 擴展加載器,加載JAVA_HOME/jre/lib/ext下面的擴展jar
- App CLassLoader 加載classpath下的jar
類裝載過程
ClassLoader#loadClass(String name, resolve); 1.加鎖 2.是否已經被裝載 3.沒有被裝載則尋找父類進行裝載,這裏是個遞歸 4。根據入參決定是否進行連接。安全
雙親委派
以前類裝載的時候先找父加載器進行加載,依次遞歸,這種的行爲叫作雙親委派。好處是安全,系統類優先被上層加載器加載。spa
類加載方式
- 隱式加載 new Object()
- 顯示加載 Class.forName(String name)