找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3229|回復: 0
打印 上一主題 下一主題
收起左側

java中三個類別加載器的關系以及各自加載的類的范圍

[復制鏈接]
跳轉到指定樓層
樓主
ID:59284 發(fā)表于 2014-3-7 02:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
Java在需要使用類別的時候,才會將類別加載,Java的類別載入是由類別載入器(Class loader)來達到的,預設上,在程序啟動之后,主要會有三個類別加載器:
1. Bootstrap Loader
2. ExtClassLoader
3. AppClassLoader
------ Bootstrap Loader是由C++撰寫而成,它負責搜尋JRE所在目錄的classes或lib目錄下的.jar檔案中(例如rt.jar)是否有指定的類別并加載(實際上是由系統(tǒng)參數(shù)sun.boot.class.path指定);
------ ExtClassLoader負責搜尋JRE所在目錄的lib/ext 目錄下的classes或.jar中是否有指定的類別并加載(實際上是由系統(tǒng)參數(shù)java.ext.dirs指定);
------ AppClassLoader則搜尋 Classpath中是否有指定的classes并加載(由系統(tǒng)參數(shù)java.class.path指定)。
Bootstrap Loader會在JVM啟動之后載入,之后它會載入ExtClassLoader并將ExtClassLoader的parent設為Bootstrap Loader,然后BootstrapLoader再加載AppClassLoader,并將AppClassLoader的parent設定為 ExtClassLoader。
在加載類時,每個類加載器會先將加載類的任務交由其parent,如果parent找不到,才由自己負責加載,如果自己也找不到,就會丟出 NoClassDefFoundError。
每一個類別被載入后,都會有一個Class的實例來代表它,每個Class的實例都會記得是哪個ClassLoader加載它的,可以由Class的getClassLoader()取得加載該類別的ClassLoader。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表