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

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

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

    cuiyi's blog(崔毅 crazycy)

    記錄點滴 鑒往事之得失 以資于發(fā)展
    數(shù)據(jù)加載中……

    ClassLoader專題(一):ClassLoader基礎(chǔ)

    ClassLoader 專題(一): ClassLoader 基礎(chǔ)

    ClassLoader 專題(二):從 Servlet 容器看 ClassLoader 機制的妙用
        ClassLoader專題(三):引文 

     

    JVM啟動,會形成3個類加載器組成的初始化加載器層次結(jié)構(gòu):
    bootstap classloader (加載核心類)
            ||
    extension classloader(加載ext(目錄),即java.ext.dirs())
            ||
    system classloader   (加載-classpath或者java.class.path或者CLASSPATH)


    ClassLoader機制:
    a)全盤負(fù)責(zé):一個classloader加載一個class后,這個class所引用或者依賴的類也由這個classloader載入,除非顯示的用另一個classloader載入
    b)委托機制:先由父加載器加載,除非父加載器找不到時才從自己的類路徑中去尋找
    c)Cache機制:classloader采用緩存機制,即先查cache;若cache中保存了這個class就直接返回;若無,才從文件讀取和轉(zhuǎn)化為class并放入cache

     

    ClassLoader加載類順序:
    1)檢查cache是否有該類:
        11)若有直接返回
        12)若無,請求父類加載
            121) 若無父,則從bootstap classloader加載
    2)加載:
        21)尋找class文件(叢與此classloader相關(guān)的類路徑中尋找)
        22)從文件載入class
        23)找不到則拋出ClassNotFoundeException
    3)擴展:
        記載時即2),覆寫findClass可以實現(xiàn)自己的載入策略
        記載時即2),覆寫loadClass來實現(xiàn)自己的載入過程


    如何實現(xiàn)運行時動態(tài)載入與更新
    本質(zhì):只要動態(tài)改類搜索路徑和清除classloader的cache已載入的class就ok
    做法:
    1)繼承ClassLoader:覆寫loadClass方法,動態(tài)尋找class文件
    2)只要重新使用一個新的類搜索路徑來new一個classloader就可以,這樣既更新了類的搜索路徑以便來載入新的class,也更新生成了一個空白的cache


    classloader載入的方式
    1)Pre-loading 預(yù)先載入,載入基礎(chǔ)類
    2)load-on-demand 按需求載入


    JDK為啥有兩個JRE?
    JDK中jre是運行java本身的程序,如javac
    ProgramFile(默認(rèn)安裝)中jre是運行用戶編寫的java程序

    posted on 2007-02-01 20:48 crazycy 閱讀(5087) 評論(5)  編輯  收藏 所屬分類: JavaSE語言

    評論

    # re: ClassLoader專題一:ClassLoader基礎(chǔ)  回復(fù)  更多評論   

    ContextClassloader也很重要,

    JDK為啥2個JRE?
    看這里http://java.sun.com/javase/6/docs/
    JDK本身包含一個JRE.
    放在programfile只是為了方便,沒有區(qū)別.
    Unix-like系統(tǒng)里面一般安裝就只有一個jre,也就是jdk里面的那個jre.
    2007-02-01 21:02 | colorzhang

    # re: ClassLoader專題(一):ClassLoader基礎(chǔ)  回復(fù)  更多評論   

    研究好了 ClassLoader 可以給自己的應(yīng)用加入熱切換, 熱部署, 熱替換功能, 那樣就是高高手了!
    2007-02-03 19:56 | BeanSoft

    # re: ClassLoader專題(一):ClassLoader基礎(chǔ)  回復(fù)  更多評論   

    @BeanSoft
    甚是啊
    潛心修行中
    2007-05-05 01:32 | crazycy

    # re: ClassLoader專題(一):ClassLoader基礎(chǔ)  回復(fù)  更多評論   

    @colorzhang
    這個地方受教了;

    programfile 下的jre主要為ie等服務(wù),呵呵
    2007-05-05 01:33 | crazycy

    # re: ClassLoader專題(一):ClassLoader基礎(chǔ)  回復(fù)  更多評論   

    請教下:
    2)只要重新使用一個新的類搜索路徑來new一個classloader就可以,這樣既更新了類的搜索路徑以便來載入新的class,也更新生成了一個空白的cache

    “重新使用一個新的類搜索路徑” , 這句是什么意思 ,能舉個例子么?
    2008-11-05 14:02 | hackerZxf
    主站蜘蛛池模板: 2021在线永久免费视频| 一级一看免费完整版毛片| 91麻豆国产自产在线观看亚洲| 亚洲成A人片在线观看中文| 亚洲综合激情五月丁香六月| 2021国产精品成人免费视频| 午夜爱爱免费视频| 在线aⅴ亚洲中文字幕| 成人免费视频一区| 中文字幕精品亚洲无线码二区| 日韩毛片一区视频免费| 亚洲色一色噜一噜噜噜| 国产线视频精品免费观看视频| 亚洲国产一成人久久精品| 久久精品国产亚洲αv忘忧草| 四虎成年永久免费网站| 亚洲色中文字幕无码AV| 久久国产免费观看精品| www亚洲精品少妇裸乳一区二区| 久久精品国产亚洲网站| 亚洲成人免费在线| 亚洲91精品麻豆国产系列在线| 毛片A级毛片免费播放| 色综合久久精品亚洲国产| 国产免费不卡视频| 亚洲日韩AV无码一区二区三区人| 免费看a级黄色片| 一级毛片一级毛片免费毛片 | 成年在线观看免费人视频草莓| 亚洲日韩精品无码专区| 亚洲第一网站男人都懂| 国产一区二区免费| 亚洲夂夂婷婷色拍WW47| 九月婷婷亚洲综合在线| 99久久人妻精品免费二区| 情人伊人久久综合亚洲| 无码区日韩特区永久免费系列| 亚洲成a人片在线观看日本麻豆| 免费人成黄页在线观看日本| 亚洲天堂免费在线| 亚洲五月综合缴情在线观看|