欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:【JVM】雙親委派模型

柚子快報激活碼778899分享:【JVM】雙親委派模型

http://yzkb.51969.com/

文章目錄

雙親委派模型(面試高頻)類加載器工作過程存在意義

雙親委派模型(面試高頻)

之所以這個東西面試出場概率高高,最大的原因就是它起的名字很好聽

描述了查找 .class 文件的策略。

類加載器

JVM 中進行類加載的操作,是有一個專門的模塊,稱為“類加載器”(ClassLoader)。JVM 中的類加載器默認是由三個(也可以自定義個數(shù))

類加載器的作用,給它一個“權限定類名”(帶有包的類名(java. lang. String)),給了之后,就找到對應的 .class 文件。這里的類加載器就是從不同的目錄中進行查找

BootstrapClassLoader

負責查找標準庫的目錄 ExtensionClassLoader

負責查找擴展庫的目錄Java 語法的規(guī)范里面描述了標準庫中應該有哪些功能。實現(xiàn) JVM 的廠商/組織會在標準庫的基礎上擴充一些額外的功能(JVM 內(nèi)置的,不同的廠商擴展的可能不太一樣)這塊內(nèi)容在上古時期用處比較多,但隨著時代的發(fā)展,這里的內(nèi)容很少會使用了 ApplicationClassLoader

負責查找當前項目的代碼目錄,以及第三方庫的目錄

上述的三個類加載器,存在“父子關系”

不是面向對象中的,父類子類繼承關系而是類似于“二叉樹”。有一個指針(引用)parent,指向自己的“父”類加載器

雙親委派模型,就描述了上述類加載器之間是符合配合工作的

工作過程

雙親委派模型工作過程:

從 ApplicationClassLoader 作為入口,先開始工作 ApplicationClassLoader 不會立即搜索自己負責的目錄,會把搜索的任務交給自己的父親 代碼就進入到 ExtensionClassLoader 范疇了,但它也不會立即搜索自己負責的目錄,也要把搜索的任務交給自己的父親 代碼就進入到 BootstrapClassLoader 范疇了,它也不想立即搜索自己負責的目錄,也想把搜索的任務交給自己的父親 BooststracpClassLoader 發(fā)現(xiàn)自己沒有父親,才會真正搜索負責的目錄(標準庫目錄),通過全限定類名,嘗試在標準庫目錄中找到符合要求的 .class 文件

如果找到了,接下來就直接進入到打開文件/讀文件等流程中如果沒找到,就回到孩子這一輩的類加載器中,繼續(xù)嘗試加載 ExtensionClassLoader 收到父親交回給他的任務之后,自己進行搜索負責目錄(擴展庫的目錄)

如果找到了,接下來就進入到后續(xù)流程如果沒找到,也就再回到孩子這一輩的類加載器中繼續(xù)嘗試加載 ApplicationClassLoader 收到父親交回給他的任務之后,自己進行搜索負責的目錄(當前項目目錄/第三方庫目錄)

如果找到了,接下來就進入后續(xù)流程如果沒找到,也是回到孩子這一輩的類加載器中嘗試繼續(xù)加載。但是由于默認情況下 ApplicationClassLoader 沒有孩子了,此時說明類加載過程失敗了,就會拋出 ClassNotFoundException 異常

存在意義

上述設定的最主要的目的就是為了確保這幾個類加載器之間的優(yōu)先級

按照上述的順序,假定在代碼中自己定義了一個 java.lang.String 這樣的類。最終程序執(zhí)行效果是:自定義的類不會被 JVM 加載

因為當我們拿著這個類給類加載器找的時候,先 BootstrapClassLoader 到標準庫中找,就找到了這個類,直接就從標準庫中加載了,就不會回到 ApplicationClassLoader (你自己寫的代碼中)這一層進行加載 設定就是為了避免你寫的類的名字和標準庫的重復了,導致標準庫的類的功能失效

柚子快報激活碼778899分享:【JVM】雙親委派模型

http://yzkb.51969.com/

精彩文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉載請注明,如有侵權,聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19497199.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄