成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么理解Java類加載器和類加載機(jī)制

這篇文章主要講解了“怎么理解Java類加載器和類加載機(jī)制”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么理解Java類加載器和類加載機(jī)制”吧!

創(chuàng)新互聯(lián) - 成都西信服務(wù)器托管,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽服務(wù)器托管,德陽服務(wù)器托管,遂寧服務(wù)器托管,綿陽服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),成都西信服務(wù)器托管,西南服務(wù)器托管,四川/成都大帶寬,大帶寬服務(wù)器,四川老牌IDC服務(wù)商

一 點(diǎn)睛

1 類加載器負(fù)責(zé)將.class文件(可能在磁盤上,也可能在網(wǎng)絡(luò)上)加載到內(nèi)存中,并為之生成對應(yīng)的java.lang.Class對象。

2 當(dāng)JVM啟動時(shí),會形成由三個(gè)類加載器組成的初始類加載器層次結(jié)構(gòu):

Bootstrap ClassLoader:根類加載器。

Extension ClassLoader:擴(kuò)展類加載器。

System ClassLoader:系統(tǒng)類加載器。

3 JVM的類加載機(jī)制主要有如下三種機(jī)制:

全盤負(fù)責(zé):所謂全盤負(fù)責(zé),就是說當(dāng)一個(gè)類加載器負(fù)責(zé)加載某個(gè)Class的時(shí)候,該Class所依賴的和引用的其他Class也將由該類加載器負(fù)責(zé)載入,除非顯式使用另外一個(gè)類加載器來載入。

父類委托:所謂父類委托則是先讓parent(父)類加載器試圖加載該Class,只有在父類加載器無法加載該類時(shí)才嘗試從自己的類路徑中加載該類。

緩存機(jī)制:緩存機(jī)制將會保證所有被加載過的Class都會被緩存,當(dāng)程序中需要使用某個(gè)Class時(shí),類加載器先從緩存中搜尋該Class,只有當(dāng)緩存中不存在該Class對象時(shí),系統(tǒng)才會讀取該類對應(yīng)的二進(jìn)制數(shù)據(jù),并將其轉(zhuǎn)換成Class對象,并存入cache。這就是為什么我們修改了Class后,程序必須重新啟動JVM,程序所作的修改才會生效的原因。

二 實(shí)戰(zhàn)

1 代碼

import java.net.*;public class BootstrapTest{  public static void main(String[] args)  {   // 獲取根類加載器所加載的全部URL數(shù)組   URL[] urls = sun.misc.Launcher.      getBootstrapClassPath().getURLs();   // 遍歷、輸出根類加載器加載的全部URL   for (int i = 0; i < urls.length; i++)   {     System.out.println(urls[i].toExternalForm());   }  }}

2 運(yùn)行

file:/D:/Program/Java/jdk1.8.0_162/jre/lib/resources.jarfile:/D:/Program/Java/jdk1.8.0_162/jre/lib/rt.jarfile:/D:/Program/Java/jdk1.8.0_162/jre/lib/sunrsasign.jarfile:/D:/Program/Java/jdk1.8.0_162/jre/lib/jsse.jarfile:/D:/Program/Java/jdk1.8.0_162/jre/lib/jce.jarfile:/D:/Program/Java/jdk1.8.0_162/jre/lib/charsets.jarfile:/D:/Program/Java/jdk1.8.0_162/jre/lib/jfr.jarfile:/D:/Program/Java/jdk1.8.0_162/jre/classes

三 實(shí)戰(zhàn)

1 代碼

import java.util.*;import java.net.*;import java.io.*;public class ClassLoaderPropTest{  public static void main(String[] args)     throws IOException  {   // 獲取系統(tǒng)類加載器   ClassLoader systemLoader = ClassLoader.getSystemClassLoader();   System.out.println("系統(tǒng)類加載器:" + systemLoader);   /*   獲取系統(tǒng)類加載器的加載路徑——通常由CLASSPATH環(huán)境變量指定   如果操作系統(tǒng)沒有指定CLASSPATH環(huán)境變量,默認(rèn)以當(dāng)前路徑作為   系統(tǒng)類加載器的加載路徑   */   Enumeration<URL> em1 = systemLoader.getResources("");   while(em1.hasMoreElements())   {     System.out.println(em1.nextElement());   }   // 獲取系統(tǒng)類加載器的父類加載器:得到擴(kuò)展類加載器   ClassLoader extensionLader = systemLoader.getParent();   System.out.println("擴(kuò)展類加載器:" + extensionLader);   System.out.println("擴(kuò)展類加載器的加載路徑:"      + System.getProperty("java.ext.dirs"));   System.out.println("擴(kuò)展類加載器的parent: "      + extensionLader.getParent());  }}

2 運(yùn)行

系統(tǒng)類加載器:sun.misc.Launcher$AppClassLoader@18b4aac2file:/E:/Java/IDEA_Java/out/production/IDEA_Java/擴(kuò)展類加載器:sun.misc.Launcher$ExtClassLoader@14ae5a5擴(kuò)展類加載器的加載路徑:D:\Program\Java\jdk1.8.0_162\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext擴(kuò)展類加載器的parent: null

感謝各位的閱讀,以上就是“怎么理解Java類加載器和類加載機(jī)制”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么理解Java類加載器和類加載機(jī)制這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

分享文章:怎么理解Java類加載器和類加載機(jī)制
瀏覽路徑:http://jinyejixie.com/article12/jjpegc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站改版云服務(wù)器、定制開發(fā)、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
稷山县| 宜阳县| 嵊泗县| 辽中县| 濮阳市| 亳州市| 沙坪坝区| 商南县| 滨州市| 辽中县| 璧山县| 柳河县| 子长县| 海安县| 犍为县| 基隆市| 焦作市| 贵州省| 报价| 惠州市| 泽库县| 寿阳县| 益阳市| 噶尔县| 伊通| 肇州县| 广昌县| 三门峡市| 玛多县| 永川市| 台山市| 盖州市| 南汇区| 竹北市| 仲巴县| 永春县| 汪清县| 潼关县| 普安县| 葫芦岛市| 南宫市|