classloder的做用
.class文件-->類裝載器-->執行引擎-->本地方法-->操做系統java
- class文件能夠來自網絡服務器等途徑,來源比較有可定製性。好比zip文件,網絡,甚至運行時動態生成的class
java類裝載的委託模型
自定義裝載器-->應用類裝載器(用戶程序的classpath)-->擴展類裝載器-->啓動類裝載器數組
- 老是把類裝載請求發給上一層,若是上層沒有,再看本身有沒有。
- 類文件和類裝載器惟一肯定一個類(即類裝載器運行時的命名空間)
- defineClass方法
傳遞給這個方法一個合法的字節數組,就能夠轉化成class對象
類加載
加載-->鏈接-->初始化服務器
加載:經過類的全限定名找到類的二進制流。方法區生成該類表明的數據結構。內存生成該類的對象,做爲方法區各類數據結構的外部接口網絡
鏈接裏有3步數據結構
- 驗證 對格式,元數據,字節碼,符號引用進行驗證
- 準備 將類的靜態變量進行內存分配和賦初值
- 解析 將類中的符號引用轉化爲直接引用
初始化
調用類的clinit構造器方法spa