JAVA的類裝載器(ClassLoader)

來源:互聯網
上載者:User
Java的類裝載器是Java 動態性核心,Java虛擬機器使用每一個類時的第一件事就是將該類的位元組碼裝載進來,裝載位元組碼的功能是由類裝載起來完成的,類裝載器負責根據一個類的名稱類定位和產生類的位元組碼資料後返回給Java虛擬機器。所以把類裝載器描敘為類位元組碼的製造器更容易讓人理解。 Java虛擬機器中內嵌了一個bootstrap的裝載器,它是用來裝載核心庫中的類(即jdk/jre/lib/rt.jar檔案中類),Java核心包中有另外兩個類裝載器:ExtClassLoader和AppClassLoader,它們都是用java編寫的java類,ExtClassLoader類裝載器負責載入放在<JAVA_HOME>/jre/lib/ext目錄下的jar包中了類,AppClassLoader負責載入應用程式的啟動載入類。 Java提供了抽象類別ClassLoader,所有使用者自訂類裝載器都執行個體化自ClassLoader的子類。System Class Loader是一個特殊的使用者自訂類裝載器,由JVM的實現者提供,在編程者不特別指定裝載器的情況下預設裝載使用者類。系統類別裝載器可以通過ClassLoader.getSystemClassLoader() 方法得到。  例1,測試你所使用的JVM的ClassLoader/*LoaderSample1.java*/public class LoaderSample1{       public static void main(String[] args)       {              Class c;              ClassLoader cl;                            cl = ClassLoader.getSystemClassLoader();//系統類別裝載器執行個體化              System.out.println(cl);                            while (cl != null)              {                     cl = cl.getParent();//parent執行個體化                     System.out.println(cl);                        }               try              {                     c = Class.forName(“java.lang.Object”);                     cl = c.getClassLoader();//核心類java.lang.Object執行個體化                     System.out.println(“java.lang.Object’s loader is ” + cl);                      c = Class.forName(“LoaderSample1”);cl = c.getClassLoader();//使用者類LoaderSample1的執行個體化                     System.out.println(“LoaderSample1’s loader is ” + cl);              }              catch (Exception e)              {                     e.printStackTrace();}        }} 在我的機器上(Sun Java 1.5.0)的運行結果sun.misc.Launcher$AppClassLoader@82ba41sun.misc.Launcher$ExtClassLoader@923e30nulljava.lang.Object’s loader isnullLoaderSample1’s loader is sun.misc.Launcher$AppClassLoader@82ba41第一行表示,系統類別裝載器執行個體化自類sun.misc.Launcher$AppClassLoader第二行表示,系統類別裝載器的parent執行個體化自類sun.misc.Launcher$ExtClassLoader第三行表示,系統類別裝載器parent的parent為bootstrap第四行表示,核心類java.lang.Object是由bootstrap裝載的第五行表示,使用者類LoaderSample1是由系統類別裝載器裝載的

轉載自:http://blog.csdn.net/tiancorn/article/details/1783500

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.