jvm 類的載入機制與原理

2022-09-10 07:06:12 字數 1247 閱讀 3183

jvm(j**a virtual machine)可以被拆分為好幾個部分,最開始的類載入器,執行引擎,本地介面、執行時資料區域。本章節主要針對類的載入機制進行說明

目前基本都知道,類在被執行時,需要經過堆類的載入,鏈結(驗證、準備、解析)和初始化的階段以及後面的**階段。

那麼類是怎麼被載入的呢?

類載入器的作用是將所需的類載入到記憶體中**用程式使用。而載入器載入類是有原則遵循的。其遵守三個原則,委託機制、可見性、單一性

委託機制:載入類在載入class檔案時,會優先交由父類去載入,如果父類找不到或者無法載入這個類,就會由其本身去載入

可見性:子載入類可以向上去找父載入類載入的類,而父載入類無法找到子載入類載入的類。

單一性:在乙個應用中乙個類只能被載入一次。

jvm的載入類分為四種:

根載入器(bootstrap classloader):主要載入jre中的rt.jar中的class檔案

擴充套件類載入器(ext classloader):主要用於載入jre中ext.jar中的class檔案

系統類載入器(system classloader):主要用於載入classpath下的class檔案,開發的功能類

自定義類載入器(custom classloader): 有開發者有特殊需求,可自定義開發載入類,去載入特定的類

類的載入方式

隱式載入:一般在寫**用new 或者呼叫靜態字段方法時,就是隱式載入了

顯示載入:通過呼叫class.forname()或者classloader.loadclass()等方法  

類載入器之間的關係與載入過程:

每個類載入器都有乙個父類載入器(根載入器除外),關係為:自定義->系統->擴充套件類(父類載入器為null表示父類載入器為根載入器)->根。

這裡的父類不是繼承關係,而是引用關係,每個子載入類都有指向父類的乙個引用。

類在系統的中由類載入器+類的全限定名稱組成唯一的標識,不同載入器載入同乙個類,是不相等的,

載入過程:首先某個類在載入時,會先讓乙個載入器去檢查是否被當前載入器載入(loadclass()方法),如果已被載入則返回;未被載入,如果有父載入類,則讓父載入器載入,如果沒有父載入器,則讓根加                                    載器載入。如果都沒有找到,則讓自身去載入(findclass()方法)。這就是上面的委託機制(雙親委派機制)。

(20條訊息) 【jvm】jvm載入class檔案的原理機制_renjingjingya0429的部落格-csdn部落格_jvm載入class檔案的原理機制

JVM 類載入機制

1 載入步驟 jvm 類載入機制分為五個部分 載入,驗證,準備,解析,初始化。2 類載入器 3 雙親委派 1 什麼是雙親委派?當乙個類收到了類載入請求,他首先把這個請求委派給父類去完成,每乙個層次類載入器都是如此,因此所有的載入請求都應該傳送到啟動類載入其中,只有當父類載入器反饋自己無法完成這個請求...

Jvm類載入機制

類載入的過程 類載入器 控制台列印輸出 主要分為以下三步 載入源包括很多種,如檔案 class檔案,jar檔案 網路 計算生成的乙個二進位製流 proxy 由其他檔案生成 jsp 等,資料庫 準備階段正式為類變數分配記憶體並設定變數的初始值。這些變數使用的記憶體都將在方法區中進行分配 這裡的初始值並...

JVM類載入機制

jvm類載入總共有7個階段。載入 驗證 準備 解析 初始化 使用 解除安裝。主要需要了解的為準備階段,初始化階段。下面分別對此兩個階段進行解析。初始化階段 初始化分為主動引用和被動引用。主動引用包括 1 建立類的例項 2 訪問類的靜態變數 3 訪問類的靜態方法 4 反射 5 虛擬機器啟動時,定義了m...