深入理解JVM之類載入器 二

2021-10-04 01:50:24 字數 962 閱讀 9897

在深入理解jvm之類載入器(一)裡面我主要介紹了jvm中關於類的載入相關的一些知識,那在本文我將詳細介紹類的初始過程。我先編寫三個類,**如下:

public class mytest 

}class myparent

}class mychild extends myparent

}

三個類的類名分別為mytest,myparent , mychild。其中mychild是myparent的子類,而mytest擁有main方法,是乙個啟動類。

首先我們在mytest這個類中執行一下如下**:

system.out.printf(mychild.str);
輸出結果為:

this is myparent static

hello world

接著把剛才的**改為如下**再執行:

system.out.printf(mychild.str2)
輸出結果為:

this is myparent static

this is mychild static

welcome!!

結果分析:第一次我們通過mychild這個類呼叫它父類myparent中的str這個靜態變數,輸出結果表明在執行 mychild.str 時,執行了myparent這個類中定義的靜態**塊,但是沒有執行mychild中的靜態**塊。而在第二次執行時我們將str換成了mychild這個類中定義的靜態變數str2,從輸出結果看出,此時**在執行時先執行了myparent這個類中的靜態**塊,接著執行了mychild中的靜態**塊,最後才輸出了str2的值。從以上分析我們得出結論:

具體載入資訊由於篇幅太長我就不貼出來了,可自行配置並執行程式觀察。

深入理解JVM 類載入器

protected class loadclass string name,boolean resolve throws classnotfoundexception else catch classnotfoundexception e if c null if resolve return c ...

jvm之類載入器

類載入過程 乙個類被載入到虛擬機器的整個生命過程將會經歷,載入 驗證 準備 解析 初始化 使用 解除安裝。這七個階段,其中驗證 準備 解析這三個階段統稱為linking。類載入時機 1.使用new 關鍵字例項化物件時。2.遇j a.lang.reflect包的方法對型別進行反射呼叫時,如果型別沒有進...

深入理解jvm記憶體區域

jvm 執行記憶體的整體流程 jvm 向作業系統申請記憶體 jvm 獲得記憶體空間後,會根據配置引數分配堆 棧以及方法區的記憶體大小 xms30m xmx30m xss1m xx maxmetaspacesize 30m 類載入這裡主要是把 class 放入方法區 還有 class 中的靜態變數和常...