Java的classloader

classloder的做用

.class文件-->類裝載器-->執行引擎-->本地方法-->操做系統java

  • class文件能夠來自網絡服務器等途徑,來源比較有可定製性。好比zip文件,網絡,甚至運行時動態生成的class

java類裝載的委託模型

自定義裝載器-->應用類裝載器(用戶程序的classpath)-->擴展類裝載器-->啓動類裝載器數組

  • 老是把類裝載請求發給上一層,若是上層沒有,再看本身有沒有。
  • 類文件和類裝載器惟一肯定一個類(即類裝載器運行時的命名空間)
  • defineClass方法
    傳遞給這個方法一個合法的字節數組,就能夠轉化成class對象

類加載

加載-->鏈接-->初始化服務器

加載:經過類的全限定名找到類的二進制流。方法區生成該類表明的數據結構。內存生成該類的對象,做爲方法區各類數據結構的外部接口網絡

鏈接裏有3步數據結構

  1. 驗證 對格式,元數據,字節碼,符號引用進行驗證
  2. 準備 將類的靜態變量進行內存分配和賦初值
  3. 解析 將類中的符號引用轉化爲直接引用

初始化
調用類的clinit構造器方法spa

相關文章
相關標籤/搜索