?
?
本文原文為 http://blog.csdn.net/crazycoder2010/article/details/6288732
?
java ClassLoader的學(xué)習(xí)
java是一門解釋執(zhí)行的語言,由開發(fā)人員編寫好的java源文件先編譯成字節(jié)碼文件.class形式,然后由java虛擬機(JVM)解釋執(zhí) 行,.class字節(jié)碼文件本身是平臺無關(guān)的,但是jvm卻不是,為了實現(xiàn)所謂的一次編譯,到處執(zhí)行,sun提供了各個平臺的JVM實現(xiàn)--也就是說 jvm不是跨平臺的,編譯好的字節(jié)碼文件被放在不同的操作系統(tǒng)平臺上的jvm所解釋執(zhí)行,這個章節(jié)主要解釋一下JVM裝載類的機制
1.ClassLoader是個毛東東?
?? ?一個類如果要被JVM所調(diào)度執(zhí)行,必須先把這個類加載到JVM內(nèi)存里,java.lang下有個很重要的類ClassLoader,這個類主要就是用來把指定名稱(指定路徑下)的類加載到JVM中
2.ClassLoader的分類
?? 主要分4類,見下圖橙色部分
?? JVM類加載器:這個模式會加載JAVA_HOME/lib下的jar包
?? 擴展類加載器:會加載JAVA_HOME/lib/ext下的jar包
?? 系統(tǒng)類加載器:這個會去加載指定了classpath參數(shù)指定的jar文件
?? 用戶自定義類加載器:sun提供的ClassLoader是可以被繼承的,允許用戶自己實現(xiàn)類加載器
?? 類加載器的加載順序如圖所示:
?
3.類加載順序
??JVM并不是把所有的類一次性全部加載到JVM中的,也不是每次用到一個類的時候都去查找,對于JVM級別的類加載器在啟動時就會把默認的 JAVA_HOME/lib里的class文件加載到JVM中,因為這些是系統(tǒng)常用的類,對于其他的第三方類,則采用用到時就去找,找到了就緩存起來的, 下次再用到這個類的時候就可以直接用緩存起來的類對象了,ClassLoader之間也是有父子關(guān)系的,沒個ClassLoader都有一個父 ClassLoader,在加載類時ClassLoader與其父ClassLoader的查找順序如下圖所示
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
