今天我們學(xué)習(xí)類加載器,關(guān)于類加載器其實(shí)和JVM有很大關(guān)系,在這里這篇文章只是簡單的介紹下類加載器,后面學(xué)習(xí)到JVM的時候還會詳細(xì)講到類加載器,本文分為下面幾個小節(jié)講解:
一、認(rèn)識類加載器
1.什么是類加載器?
所謂的類加載器可以從其作用來理解,其功能就是將classpath目錄下.class文件,加載到內(nèi)存中來進(jìn)行一些處理,處理完的結(jié)果就是一些字節(jié)碼.那是誰把這些class類加載到內(nèi)存中來的呢?就是類加載器。
2.JVM中默認(rèn)的類加載器有哪些?
java虛擬機(jī)中可以安裝多個類加載器,系統(tǒng)默認(rèn)三個主要的類加載器,每個類加載器負(fù)責(zé)加載不同位置的類:BootStrap,ExtClassLoader,AppClassLoader
注意的是:
1.類加載器本身也是一個java類,因?yàn)轭惣虞d器本身也是一個java類,那么這個特殊的java類【類加載器】是有誰加載進(jìn)來的呢?這顯然要有第一個類加載器,這第一個類加載器不是一個java類,它是BootStrap。
2.BootStrap不是一個java類,不需要類加載器java加載,他是嵌套在java虛擬機(jī)內(nèi)核里面的。java 虛擬機(jī)內(nèi)核已啟動的時候,他就已經(jīng)在那里面了,他是用c++語言寫的一段二進(jìn)制代碼。他可以去加載別的類,其中別的類就包含了類加載器【如上面提到的Ext 和 app】。
案例:
下面我們寫個例子來獲取ClassLoaderTest這個類的類加載器的名字,代碼如下:
package study.javaenhance; import java.util.ArrayList; public class ClassLoaderTest { public static void main(String[] args) throws Exception { //獲取類加載器,那么這個獲取的是一個實(shí)例對象,我們知道類加載器也有很多種,那么因此也有其對應(yīng)的類存在,因此可以獲取到對應(yīng)的字節(jié)碼 System.out.println(ClassLoaderTest.class.getClassLoader()); //獲取類加載的字節(jié)碼,然后獲取到類加載字節(jié)碼的名字 System.out.println(ClassLoaderTest.class.getClassLoader().getClass().getName()); //下面我們看下獲取非我們定義的類,比如System ArrayList 等常用類 System.out.println(System.class.getClassLoader()); System.out.println(ArrayList.class.getClassLoader()); } }
網(wǎng)站題目:JAVA提高第七篇類加載器解析-創(chuàng)新互聯(lián)
地址分享:http://chinadenli.net/article40/dcpdho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、動態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容