<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ClassLoader of Java

    乍一看到ClassLoader,我的第一感覺就是這東西好神秘啊。然后找了一下資料,略懂了一點(diǎn)皮毛,然后在這里和大家分享一下,這篇文章在接下來的日子里會(huì)不斷的被更新,希望會(huì)越來越完善。

    首先,我們了解一下ClassLoader是干什么用的呢?
    大家都知道,JVM解析的是Class的字節(jié)碼文件,那么JVM怎樣來加載這個(gè)字節(jié)碼文件呢,沒錯(cuò),ClassLoader負(fù)責(zé)了這項(xiàng)重要的工作。

    JDK中主要有以下幾種ClassLoader:

    a, Bootstrap ClassLoader/啟動(dòng)類加載器
    主要負(fù)責(zé)jdk_home/lib目錄下的核心 api 或 -Xbootclasspath 選項(xiàng)指定的jar包裝入工作.

     

    b, Extension ClassLoader/擴(kuò)展類加載器
    主要負(fù)責(zé)jdk_home/lib/ext目錄下的jar包或 -Djava.ext.dirs 指定目錄下的jar包裝入工作

     

    c, System ClassLoader/系統(tǒng)類加載器
    主要負(fù)責(zé)java -classpath/-Djava.class.path所指的目錄下的類與jar包裝入工作.

     

    b, User Custom ClassLoader/用戶自定義類加載器(java.lang.ClassLoader的子類)
    在程序運(yùn)行期間, 通過java.lang.ClassLoader的子類動(dòng)態(tài)加載class文件, 體現(xiàn)java動(dòng)態(tài)實(shí)時(shí)類裝入特性.


    那么我們能用ClassLoader做什么事情呢?

    如果我們想動(dòng)態(tài)的加載一個(gè)類,比如我們想實(shí)現(xiàn)一個(gè)Hot-Swap的應(yīng)用,我們期望一個(gè)剛開發(fā)的高版本的Class在不關(guān)閉JVM的情況下讓它工作,此時(shí)我們就可以實(shí)現(xiàn)我們自己的ClassLoader,重寫里面的findClass方法。


    這里我們需要注意ClassLoader的雙親委托模式,即定義ClassLoader加載一個(gè)類之前,要先委托它的父親ClassLoader進(jìn)行加載,只有當(dāng)父親ClassLoader無法加載成功后,才會(huì)由自己加載。為什么要使用這種雙親委托模式呢? 


    第一個(gè)原因就是因?yàn)檫@樣可以避免重復(fù)加載,當(dāng)父親已經(jīng)加載了該類的時(shí)候,就沒有必要子ClassLoader再加載一次。 

    第二個(gè)原因就是考慮到安全因素,我們?cè)囅胍幌拢绻皇褂眠@種委托模式,那我們就可以隨時(shí)使用自定義的String來動(dòng)態(tài)替代java核心api中定義類型,這樣會(huì)存在非常大的安全隱患,而雙親委托的方式,就可以避免這種情況,因?yàn)镾tring已經(jīng)在啟動(dòng)時(shí)被加載,所以用戶自定義的ClassLoader 無法加載另外的String。

     


    參考資料:

    http://www.iteye.com/topic/136427

    http://www.iteye.com/topic/83978




    Kyle Wang

    posted on 2012-04-22 17:15 王樹東 閱讀(180) 評(píng)論(0)  編輯  收藏 所屬分類: Java Skills Learning and Sharing


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    常用鏈接

    留言簿

    隨筆分類(17)

    隨筆檔案(15)

    文章分類(4)

    文章檔案(5)

    收藏夾(4)

    Algorithm

    Design

    Environment Setup

    Installer

    Maven

    MINA

    OS

    Skills for Java

    VIM

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲最大免费视频网| 一区二区在线免费视频| 成人福利免费视频| 亚洲一区二区影院| 91大神免费观看| 亚洲成人福利网站| 中文字幕av无码无卡免费| 亚洲三级视频在线| 免费看的一级毛片| 黄网站在线播放视频免费观看| 免费人成在线观看播放国产 | 麻豆一区二区免费播放网站| 亚洲精品成人久久| 三年片在线观看免费观看高清电影 | 成人伊人亚洲人综合网站222| 免费无码国产在线观国内自拍中文字幕 | 大学生a级毛片免费观看| 亚洲av成人中文无码专区| 亚洲国产电影av在线网址| 高清永久免费观看| 青青草原精品国产亚洲av| 24小时日本在线www免费的| 精品久久久久久久久亚洲偷窥女厕| 免费看国产精品麻豆| 久久国产精品免费一区二区三区| 亚洲av午夜福利精品一区| 免费福利视频导航| 日韩精品亚洲专区在线影视| 亚洲国产免费综合| 99在线观看精品免费99| 亚洲人成欧美中文字幕| 中文字幕无码精品亚洲资源网| 十八禁无码免费网站| 亚洲成AV人片在WWW| 亚洲理论电影在线观看| AV无码免费永久在线观看| 国产成人亚洲精品播放器下载| 亚洲va中文字幕无码久久| 毛片免费在线视频| a级毛片免费播放| 亚洲欧洲免费无码|