日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

类装载器ClassLoader

發(fā)布時(shí)間:2024/4/13 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 类装载器ClassLoader 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在裝載(Load)階段,其中第(1)步:通過類的全限定名獲取其定義的二進(jìn)制字節(jié)流,需要借助類裝載器完成,顧名思義,就是用來裝載Class文件的。

(1)通過一個(gè)類的全限定名獲取定義此類的二進(jìn)制字節(jié)流

分類

1)Bootstrap ClassLoader 負(fù)責(zé)加載$JAVA_HOME中 jre/lib/rt.jar 里所有的class或Xbootclassoath選項(xiàng)指定的jar包。由C++實(shí)現(xiàn),不是ClassLoader子類。
2)Extension ClassLoader 負(fù)責(zé)加載java平臺(tái)中擴(kuò)展功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar 或 -Djava.ext.dirs指定目錄下的jar包。
3)App ClassLoader 負(fù)責(zé)加載classpath中指定的jar包及 Djava.class.path 所指定目錄下的類和jar包。
4)Custom ClassLoader 通過java.lang.ClassLoader的子類自定義加載class,屬于應(yīng)用程序根據(jù)自身需要自定義的ClassLoader,如tomcat、jboss都會(huì)根據(jù)j2ee規(guī)范自行實(shí)現(xiàn)ClassLoader。

圖解

加載原則

檢查某個(gè)類是否已經(jīng)加載:順序是自底向上,從Custom ClassLoader到BootStrap ClassLoader逐層檢查,只要某個(gè)Classloader已加載,就視為已加載此類,保證此類只所有ClassLoader加載一次。

加載的順序:加載的順序是自頂向下,也就是由上層來逐層嘗試加載此類。

雙親委派機(jī)制

定義:如果一個(gè)類加載器在接到加載類的請(qǐng)求時(shí),它首先不會(huì)自己嘗試去加載這個(gè)類,而是把這個(gè)請(qǐng)求任務(wù)委托給父類加載器去完成,依次遞歸,如果父類加載器可以完成類加載任務(wù),就成功返回;只有父類加載器無法完成此加載任務(wù)時(shí),才自己去加載。

優(yōu)勢(shì):Java類隨著加載它的類加載器一起具備了一種帶有優(yōu)先級(jí)的層次關(guān)系。比如,Java中的Object類,它存放在rt.jar之中,無論哪一個(gè)類加載器要加載這個(gè)類,最終都是委派給處于模型最頂端的啟動(dòng)類加載器進(jìn)行加載,因此Object在各種類加載環(huán)境中都是同一個(gè)類。如果不采用
雙親委派模型,那么由各個(gè)類加載器自己取加載的話,那么系統(tǒng)中會(huì)存在多種不同的Object類。

破壞:可以繼承ClassLoader類,然后重寫其中的loadClass方法,其他方式大家可以自己了解拓展一下。

?

?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的类装载器ClassLoader的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。