關於類的載入機制總結

2021-10-09 03:28:40 字數 1386 閱讀 5449

關於類的載入機制

首先我們要知道類載入機制的原理是什麼?

1.啟動jvm

2.將需要執行的class檔案載入到虛擬機器記憶體中

3.找到主類,開始執行主函式

然後又是如何將class檔案載入到jvm記憶體中的?

載入步驟:

1.先委託父類載入類,如果父類已經載入,就不需要再次載入,如果父類沒有載入,再由本載入器載入

2.解析類路徑,將類路徑轉換成檔案路徑

3.通過檔案輸入流來讀取class檔案,得到位元組陣列

4.將位元組陣列轉換成類物件,物件的型別是class型別

先來看一下class物件的幾種方式:

​ 1.通過類名.class

​ class c1 = student.class;

​ 2.通過物件的getclass()方法

​ class c2 = stu.getclass();

3.通過類載入器獲得class物件

​ classloader classloader = classloader.getsystemclassloader();

​ class c3 = classloader.loadclass(「com.newer.test.student」);

4.通過 class.forname()獲得class物件;

​ class c4 = class.forname(「com.newer.test.student」);

​ 我們還可以通過class物件獲得構造方法物件如以下:

1.獲得所有可見的構造方法

constructor[

] cons= c.

getconstructors()

;2.獲得所有已經宣告的構造方法

constructor[

] cons2= c.

getdeclaredconstructors()

;3.獲得指定的可見的某乙個構造方法

constructor cc = c.

getconstructor

(int

.class

,string.

class

,int

.class);

4.從宣告的方法中獲得指定的構造方法

constructor cc2 = c.

getdeclaredconstructor

(int

.class);

5.通過構造方法來例項化物件

object obj = cc.

newinstance

(構造方法的引數)

;6.訪問私有構造方法

cc2.

setaccessible

(true

);

類載入機制

類的生命週期 乙個類從被載入到記憶體中開始,他的生命週期包括以下幾個階段 類載入時機 類是什麼時候開始載入的?虛擬機器並沒有明確規定,可以由虛擬機器自行實現,但是在類初始化前類必須被載入,虛擬機器明確規定了有且只有5種情況必須進行類的初始化,因此我們也可以理解為類載入的5個時機。使用new關鍵字例項...

雙親委託類載入機制 類載入器機制

啟動類載入器和擴充套件類載入器沒有父類載入器,而系統類載入器的父類載入器是擴充套件類載入器,自定義類載入器父類載入器則是擴充套件類載入器 所謂的類載入 就是建立.class檔案對應的class物件,並將class檔案載入到記憶體的過程。1 載入 查詢類的.class檔案,並建立class物件 3 初...

JVM 類載入機制 類載入器

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