ClassLoad類載入器

2022-10-07 20:18:10 字數 810 閱讀 7547

類載入器的任務是根據乙個類的全限定名來讀取此類的二進位制位元組流到jvm中,然後轉換為乙個與目標類對應的j**a.lang.class物件例項。

對於任意乙個類,都必須由載入它的類載入器和這個類本身一起共同確立其在j**a虛擬機器中的唯一性

j**a預設提供了三個載入器

bootstrap classloader:是j**a類載入層次中最頂層的類載入器,負責載入jdk中的核心類庫(j**a、j**ax、sun等開頭的類)

extension classloader:負責載入j**a的擴充套件類庫,預設載入j**a_home/jre/lib/ext/目下的所有jar。

classload是以雙親委派的模式來搜尋類的。

乙個類載入器收到了類載入請求,它並不會自己先去載入,而是把這個請求委託給父類的載入器去執行,如果父親有能力解決那麼就由父親解決否則就是兒子自己解決,依次向下的順序處理。

雙親委派的優點就是避免重複載入 + j**a核心類的優先載入,假設網路傳入j**a.lang.integer類,bootstrap

反射可以打破雙親委派機制,因為類載入會形成class類,而class類在jvm記憶體區域中,是共享的。

flink中的類載入器ClassLoader

在flink中的taskmanager中的classloader並不是使用的雙親委派機制 類載入器從子到父為 再往上platformclassloader的paretn classloader就是null了,應該就到bootstrap classloader 個人認為應該是雙親委派不能夠滿足flin...

類載入器載入順序

先上 public class parent static public parent public static void staticmethod1 public static void staticmethod2 測試類 public static void main string args ...

JVM 類載入機制 類載入器

類宣告週期 檔案格式驗證 基於二進位製流,只有這一步是基於二進位製流,後續步驟都是基於方法區資料 1.魔數 cafe babe 開頭 2.主次版本是否在當前jvm支援範圍 3.常量池的常量是否不被支援 4.很多很多規範 元資料驗證 1.類是否有父類,object 2.匪類是否繼承了被final修飾的...