JVM類載入機制及雙親委派機制原始碼解讀

Kuroko發表於2021-07-10

JVM類載入機制、雙親委派機制

從一幅圖說起:方法的載入、執行過程www.processon.com/diagraming/5f33e...

解讀:
載入某個類時會先委託父載入器尋找目標類,找不到再委託上層父載入器載入,如果所有父載入器在自己的載入類路徑下都找不到目標類,則在自己的類載入路徑中查詢並載入目標類。
比如我們的Math類, 先會找應用程式類載入器載入,應用程式類載入器會先委託擴充套件類載入器載入,擴充套件類載入器再委託引導類載入器,頂層引導類載入器在自己的類載入路徑裡找了半天沒找到Math類,則向下退回載入Math類的請求,擴充套件類載入器收到回覆就自己載入,在自己的類載入路徑裡找了半天也沒找到Math類,又向下退回Math類的載入請求給應用程式類載入器,應用程式類載入器於是在自己的類載入路徑裡找Math類,結果找到了就自己載入了。。
原始碼解讀:

loadClass : —>首先,檢查一下指定名稱的類是否已經載入過,如果載入過了,就不需要再載入,直接返回。
如果此類沒有載入過,那麼,再判斷一下是否有父載入器;如果有父載入器,則由父載入器載入(即呼叫parent.loadClass(name, false);).或者是呼叫bootstrap類載入器來載入。
如果父載入器及bootstrap類載入器都沒有找到指定的類,那麼呼叫當前類載入器的 findClass方法來完成類載入。
真正的findClass方法實現在RULClassLoader方法裡面



載入類的方法

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章