Java中的類加載機制

加載、鏈接(驗證 準備 解析)、初始化階段

  • 加載:根據類的全限定名來獲取此類的二進制字節流;將這個字節流表明的靜態存儲結構轉化爲方法區中的動態存儲結構;在內存中生成一個表明這個類的java.lang.Class對象,做爲方法區中這個類的訪問入口。
  • 驗證(鏈接):確保加載的類信息符合jvm規範,無安全方面的問題
  • 準備(鏈接):爲類變量分配內存並設置初始值,分配的內存在方法區中
  • 解析(鏈接):將常量池中的符號引用轉化爲直接引用的過程
  • 初始化:初始化階段是執行類構造器 clinit() 方法的過程。該方法是由編譯器自動收集類中全部類變量的賦值動做和靜態語句塊合併產生。且保證子類的 clinit 調用以前會先調用父類的 clinit 方法。接口除外,若是一個類實現了接口,在執行該類的 clinit 方法,就不會執行接口的 clinit 方法。由於 clinit 方法能夠不存在,好比接口沒有靜態語句塊和類變量。
相關文章
相關標籤/搜索