<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)論排行榜

    主站蜘蛛池模板: 久久久久久99av无码免费网站| 久久精品中文字幕免费| 一级女人18毛片免费| 亚洲美女视频一区| 暖暖日本免费中文字幕| 久久91亚洲人成电影网站| 日本道免费精品一区二区| 亚洲精品国产美女久久久| 免费黄网站在线看| 777亚洲精品乱码久久久久久| 999任你躁在线精品免费不卡| 亚洲视频免费在线看| 日本亚洲免费无线码| 亚洲国产成人久久精品软件| 国产日产成人免费视频在线观看| 美女黄色毛片免费看| 亚洲中文久久精品无码| 免费观看成人久久网免费观看| 久久精品国产亚洲av水果派| 在线观看av永久免费| 极品色天使在线婷婷天堂亚洲| 国产成人亚洲影院在线观看| 青柠影视在线观看免费| 亚洲精品在线不卡| 日本高清免费aaaaa大片视频| 九九免费观看全部免费视频| 亚洲成亚洲乱码一二三四区软件| 亚洲毛片免费观看| 亚洲av最新在线观看网址| 国产亚洲精品影视在线产品 | 国产亚洲一区二区三区在线不卡| a级成人毛片免费视频高清| 亚洲成人午夜电影| 日韩精品电影一区亚洲| 久久国产精品国产自线拍免费| 亚洲一区免费视频| 自拍偷自拍亚洲精品第1页| 在线人成精品免费视频| 国产天堂亚洲国产碰碰| 337p欧洲亚洲大胆艺术| 免费大香伊蕉在人线国产|