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

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

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

    posts - 88, comments - 3, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    關于java默認的類加載器的簡單代碼研究

    Posted on 2016-03-16 15:40 Milo的海域 閱讀(323) 評論(0)  編輯  收藏 所屬分類: Java
    1. 默認的3個classloader: BootstrapClassloader (Native實現), ExtClassloader, AppClassloader (Java實現)
    2. 3個加載器并不是真正的父子繼承關系,而是邏輯上的,JVM啟動先創建ExtClassloader instance,然后構造AppClassloader的時候傳入ExtClassloader實例作為parent
            Launcher.ExtClassLoader extcl;
            
    try {
                extcl 
    = Launcher.ExtClassLoader.getExtClassLoader();
            } 
    catch (IOException var10) {
                
    throw new InternalError("Could not create extension class loader", var10);
            }

            
    try {
                
    this.loader = Launcher.AppClassLoader.getAppClassLoader(extcl);
            } 
    catch (IOException var9) {
                
    throw new InternalError("Could not create application class loader", var9);
            }

    關于雙親委派原理: 在加載類的時候,會看看parent有沒有設定,如果設定了 就調用parent.loadClass方法,如果沒設定(==null)也就是parent應該是BootstrapClassloader, 會調用native的findBootstrapClass來加載類,代碼:
                    try {
                        
    if(this.parent != null) {
                            c 
    = this.parent.loadClass(name, false);
                        } 
    else {
                            c 
    = this.findBootstrapClassOrNull(name);
                        }
                    } 
    catch (ClassNotFoundException var10) {
                        ;
                    }

    目的是按照一定優先級別裝載系統的lib,系統ext目錄的lib,以及classpath的lib,防止系統的默認行為或者類的實現被修改。

    3. java 類的動態加載
    Java內置的ClassLoader總會在加載一個Class之前檢查這個Class是否已經被加載過,已經被加載過的Class不會加載第二次。因此要想重新加載Class,我們需要實現自己的ClassLoader。
    另外一個問題是,每個被加載的Class都需要被鏈接(link),這是通過執行ClassLoader.resolve()來實現的,這個方法是 final的,因此無法重寫。Resove()方法不允許一個ClassLoader實例link一個Class兩次,因此,當你需要重新加載一個 Class的時候,你需要重新New一個你自己的ClassLoader實例。
    主站蜘蛛池模板: 亚洲欧洲在线观看| 亚洲精品和日本精品| 成a人片亚洲日本久久| 亚洲成人网在线播放| 亚洲人成色77777在线观看大| 99爱视频99爱在线观看免费| 三年片免费高清版 | 亚洲熟妇无码一区二区三区| 亚洲国产中文v高清在线观看| 国产高清免费观看| 成人免费无码大片a毛片软件| 亚洲一级免费毛片| 91精品啪在线观看国产线免费| 日本精品久久久久久久久免费| 亚洲欧美成人一区二区三区| youjizz亚洲| 无码亚洲成a人在线观看| 亚洲码和欧洲码一码二码三码| 噜噜综合亚洲AV中文无码| 日韩欧美亚洲国产精品字幕久久久 | 无码视频免费一区二三区| 在线免费一区二区| 永久免费bbbbbb视频| 久久久久噜噜噜亚洲熟女综合| 一本久久a久久精品亚洲| 久久精品国产亚洲沈樵| 99人中文字幕亚洲区| 亚洲人xxx日本人18| www.xxxx.com日本免费| 免费萌白酱国产一区二区三区| 全免费a级毛片免费看| 天天干在线免费视频| 亚洲精品天堂成人片?V在线播放| 在线精品亚洲一区二区三区| 亚洲啪啪AV无码片| 亚洲av片在线观看| 亚欧免费一级毛片| 免费v片在线观看| 亚洲国产精品综合久久久| 老司机午夜性生免费福利| 亚洲一区二区三区免费视频|