• <nav id="dstbx"></nav>

    <nav id="dstbx"></nav>
    1. <form id="dstbx"></form>
    2. <small id="dstbx"></small>

      教育行業A股IPO第一股(股票代碼 003032)

      全國咨詢/投訴熱線:400-618-4000

      類的加載機制是什么?【Java面試題】

      更新時間:2021年06月21日10時08分 來源:傳智教育 瀏覽次數:

      傳智教育-一樣的教育,不一樣的品質

      (1)問題分析:

      Class文件由類裝載器裝載后,在JVM中將形成一份描述Class結構的元信息對象,通過該元信息對象可以獲知Class的結構信息:如構造函數,屬性和方法等,Java允許用戶借由這個Class相關的元信息對象間接調用Class對象的功能。

      虛擬機把描述類的數據從class文件加載到內存,并對數據進行校驗,轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這就是虛擬機的類加載機制。

      (2)核心答案講解:

      類裝載器就是尋找類的字節碼文件,并構造出類在JVM內部表示的對象組件。在Java中,類裝載器把一個類裝入JVM中,要經過以下步驟:

      1)裝載:查找和導入Class文件;

      2)鏈接:把類的二進制數據合并到JRE中;

      A)校驗:檢查載入Class文件數據的正確性;

      B)準備:給類的靜態變量分配存儲空間;

      C)解析:將符號引用轉成直接引用;

      3)初始化:對類的靜態變量,靜態代碼塊執行初始化操作

      Java程序可以動態擴展是由運行期動態加載和動態鏈接實現的;比如:如果編寫一個使用接口的應用程序,可以等到運行時再指定其實際的實現(多態),解析過程有時候還可以在初始化之后執行;比如:動態綁定(多態)。

      (3)問題擴展

      由于Java的跨平臺性,經過編譯的Java源程序并不是一個可執行程序,而是一個或多個類文件。當Java程序需要使用某個類時,JVM會確保這個類已經被加載、連接(驗證、準備和解析)和初始化。類的加載是指把類的.class文件中的數據讀入到內存中,通常是創建一個字節數組讀入.class文件,然后產生與所加載類對應的Class對象。加載完成后,Class對象還不完整,所以此時的類還不可用。當類被加載后就進入連接階段,這一階段包括驗證、準備(為靜態變量分配內存并設置默認的初始值)和解析(將符號引用替換為直接引用)三個步驟。最后JVM對類進行初始化,包括:1)如果類存在直接的父類并且這個類還沒有被初始化,那么就先初始化父類;2)如果類中存在初始化語句,就依次執行這些初始化語句。

      類的加載是由類加載器完成的,類加載器包括:根加載器(BootStrap)、擴展加載器(Extension)、系統加載器(System)和用戶自定義類加載器(java.lang.ClassLoader的子類)?!?/p>

      (4)結合項目中的使用





      猜你喜歡:

      使用static關鍵字如何定義成員變量?

      JVM將內存空間劃分為幾種?【Java面試題】

      JVM對Java的原生鎖做了哪些優化?

      傳智教育Java高級軟件工程師培訓

      0 分享到:
      神马影院我不卡