Java類加載機制

類加載過程

類加載過程有:加載、連接(驗證、準備、解析)、初始化、使用、卸載

  1. 加載:將class文件加載到方法區(qū),然后在堆中生成對應(yīng)的class對象
  2. 驗證:對class靜態(tài)結(jié)構(gòu)進行驗證,包括元數(shù)據(jù)、字節(jié)碼進行驗證,確保class是安全的
  3. 準備:對class中的靜態(tài)屬性賦默認值
  4. 解析:將符號引用解析成直接引用(靜態(tài)解析,多態(tài)的動態(tài)解析是發(fā)生在初始化之后運行階段)
  5. 初始化:主動資源初始化,對class中的成員變量、靜態(tài)變量、靜態(tài)代碼塊初始化


    類加載過程

類加載器

類加載器有:啟動類加載器、擴展類加載器、應(yīng)用程序類加載器、自定義類加載器

  1. 啟動類加載器:加載核心類庫的類,/jre/lib目錄下的jar包
  2. 擴展類加載器:加載擴展庫目錄的類,/jre/lib/ext目錄下的jar包
  3. 應(yīng)用程序類加載器:當前java應(yīng)用classpath中的類
  4. 自定義類加載器:繼承ClassLoader,打破雙親委派,需要實現(xiàn)loadClass方法;否則實現(xiàn)findClass方法

雙親委派機制

類的加載滿足雙親委派機制,每個類加載器收到類加載請求時,會先委派給父類加載器進行加載,當父類加載器無法加載類時,自己才會嘗試去加載。

雙親委派模型的好處有:防止核心庫被篡改;避免類的重復加載。


雙親委派機制
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容