1、載入
載入的過程本質上是乙個讀取二進位制資料的過程。可以是檔案,網路資料,記憶體中的資料等,這一階段是可以自定義的。載入過程中會在堆中初始化乙個 class 物件。
2、驗證
驗證就是驗證這堆二進位制資料是不是有效的,就是這個 class 資料是否可以載入虛擬機器。例如驗證檔案是否是 0xcafebab 開頭,再驗證版本號是否被當前 jvm 支援,然後再校驗內部的變數等等是否符合規範。
3、準備
準備階段會在記憶體中開闢出空供靜態變數使用。
4、解析
解析過程就是讀取 class 檔案的內容然後解析出裡面的變數值的等。
5、初始化
解析出來的變數值賦值放到在準備階段開闢的記憶體空間中。
6、使用
在堆中尋找到 class ,找到構造方法,執行構造方法便完成乙個物件的使用。
7、解除安裝
解除安裝乙個類不怎麼常見,用途的話一般是伺服器動態部署等,例如 tomcat 解除部署乙個**,這時候就要從記憶體中解除安裝關聯的類,解除安裝的過程一般包括清除 class 物件,清除靜態變數等。
java類的載入過程
以person person new person 為例進行說明 1 因為new用到了person.class,所以會先找到person.class檔案,並載入到記憶體中 2 執行該類中的static 塊,如果有的話,給person.class類進行初始化 3 在堆記憶體中開闢空間分配記憶體位址 4...
Java 類的載入過程
棧 用來執行函式。可以儲存區域性資訊 堆 用來儲存new出來的實體 特點 每乙個實體所開闢的空間都有乙個位址 每乙個實體中儲存的資料都有乙個預設初始值 方法區 存放.class和static 方法區其實是由n多個小的區域構成。有存放非靜態內容的非靜態區域,還有存放靜態內容的靜態區域,還有存放常量的常...
類載入過程
類載入時機 1 new 靜態屬性,靜態方法呼叫 2 people.class 獲取class物件 3 載入子類時需提前載入父類 4 main函式所在的類需要載入 類載入器 也是一種類,可由其他類載入器載入 頂級父類載入器有c,c 寫成,不能由其他類載入器載入 載入類 雙親委派模型 從子類到父類依次查...