類的載入過程

2021-08-30 10:58:00 字數 759 閱讀 6747

類的載入過程: 

1、在建立物件時,會先判斷物件所屬的型別(類)在記憶體中是否存在,如果存在則直接使用;如果不存在,則把類載入到記憶體中的方法區下 

2、在把類(.class)載入到方法區時,分兩種情況: 2.1、從.class檔案的上面向下依次載入內容 2.2、靜態的內容載入到方法區的靜態區域下 非靜態內容載入到方法區的非靜態區域下 

3、當.class中的內容全部載入到方法區後,會對靜態區域下的所有靜態變數進行預設初始化 

4、當所有的靜態變數預設初始化完成之後,再對靜態變數進行顯式初始化 

5、在對所有的靜態變數顯式初始化完成之後,會呼叫靜態**塊進入到棧中執行 

6、只有在所有的靜態**塊全部執行(按照靜態**塊在.class檔案中的先後書寫順序執行)完之後,整個.class的載入才完成。在類載入完成之後,就可以建立物件了:

物件的建立過程: 

1、在堆中開闢一塊空間,在開闢完後,給空間分配乙個位址 

2、當空間分配位址後,把所有的非靜態成員全部載入到開闢的空間下 

3、當所有的非靜態成員全部載入完成之後,對所有的非靜態成員變數進行預設初始化 

4、在所有的非靜態成員變數預設初始化完成之後,呼叫該物件的建構函式進入到棧中執行 

5、在棧中建構函式執行時,會分為兩部分: 5.1、第一部分:隱式三步          1、執行super()語句         2、顯式初始化所有的非靜態成員變數         3、把構造**塊加到棧中執行 5.2、第二部分:在隱式三步,執行完之後,才會執行建構函式中所書寫的** 

類的載入過程

person person new person 為例進行說明。1 因為new用到了person.class,所以會先找到person.class檔案,並載入到記憶體中 2 執行該類中的static 塊,如果有的話,給person.class類進行初始化 3 在堆記憶體中開闢空間分配記憶體位址 4 ...

類的載入過程

類的載入過程,可分為三個階段,載入 連線 初始化。初始化,為類的靜態變數賦予預設的初始值 jvm規範規定了以下六種主動使用類的場景 被動呼叫,不會導致類的載入和初始化 先看乙個面試題 public class singleton public static singleton getinstance...

類的載入過程

首先要知道的一點 程式呼叫時,jvm會初始化,初始化的過程中會生成多個類載入器,jvm呼叫指定的類載入器去載入類即可。類載入器分為兩類 系統提供和手動編寫 系統提供 解釋 我們把每一層上面的類載入器叫做當前層類載入器的父載入器,當然,它們之間的父子關係並不是通過繼承關係來實現的,而是使用組合關係來復...