一.類加載過程
1.裝載
類的class文件讀入到內存,併爲之創建一個java.lang.Class對象
1.定位 classloader.find() 找到文件位置,通過類的全限定名來獲取定義此類的二進制字節流
2.將class文件信息放到方法區中
3.將 class對應的對象 放到JVM的堆中
2.鏈接
1.確保類的信息的正確性
2.爲類的靜態變量分配空間,並初始化爲默認值
3.將class中的符號引用轉爲直接引用 , 也就是class中的符號轉爲內存中的地址
3.初始化
將類的靜態變量賦值爲真正的值
二.類加載器
類加載器負責加載所有的類,其爲所有被載入內存中的類生成一個java.lang.Class實例對象。一旦一個類被加載如JVM中,同一個類就不會被再次載入了。
三.類加載機制
1.全盤負責
2.雙親委派
3.緩存機制
雙親委派機制:如果一個類加載器收到了類加載請求,它並不會自己先去加載,而是把這個請求委託給父類的加載器去執行,如果父類加載器還存在其父類加載器,則進一步向上委託,依次遞歸,請求最終將到達頂層的啓動類加載器,如果父類加載器可以完成類加載任務,就成功返回,倘若父類加載器無法完成此加載任務,子加載器纔會嘗試自己去加載。