最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java類加載器和類加載機制實例分析

 更新時間:2019年07月17日 09:39:54   作者:cakincqm  
這篇文章主要介紹了Java類加載器和類加載機制,結(jié)合實例形式分析了java類加載器與類加載機制原理、實現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Java類加載器和類加載機制。分享給大家供大家參考,具體如下:

一 點睛

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

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

Bootstrap ClassLoader:根類加載器。

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

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

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

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

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

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

二 實戰(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 運行

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

三 實戰(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 運行

系統(tǒng)類加載器:sun.misc.Launcher$AppClassLoader@18b4aac2
file:/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相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • StreamAPI多次消費一個stream代碼實例

    StreamAPI多次消費一個stream代碼實例

    這篇文章主要介紹了StreamAPI多次消費一個stream代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java 重入鎖和讀寫鎖的具體使用

    Java 重入鎖和讀寫鎖的具體使用

    這篇文章主要介紹了Java 重入鎖和讀寫鎖的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Mybatis-Plus實現(xiàn)只更新部分字段的數(shù)據(jù)

    Mybatis-Plus實現(xiàn)只更新部分字段的數(shù)據(jù)

    這篇文章主要介紹了Mybatis-Plus實現(xiàn)只更新部分字段的數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • JAVA中通過Hibernate-Validation進(jìn)行參數(shù)驗證

    JAVA中通過Hibernate-Validation進(jìn)行參數(shù)驗證

    這篇文章主要介紹了JAVA中通過Hibernate-Validation進(jìn)行參數(shù)驗證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Spring MVC學(xué)習(xí)筆記之Controller查找(基于Spring4.0.3)

    Spring MVC學(xué)習(xí)筆記之Controller查找(基于Spring4.0.3)

    這篇文章主要給大家介紹了關(guān)于Spring MVC學(xué)習(xí)筆記之Controller查找(基于Spring4.0.3)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Java ArrayDeque實現(xiàn)Stack的功能

    Java ArrayDeque實現(xiàn)Stack的功能

    這篇文章主要介紹了Java ArrayDeque實現(xiàn)Stack功能的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 基于springboot集成hbase過程解析

    基于springboot集成hbase過程解析

    這篇文章主要介紹了基于springboot集成hbase過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • 解析Spring中面向切面編程

    解析Spring中面向切面編程

    如果說 IoC 是 Spring 的核心,那么面向切面編程就是 Spring 最為重要的功能之一了,在數(shù)據(jù)庫事務(wù)中切面編程被廣泛使用
    2021-06-06
  • Java Swing中JList選擇事件監(jiān)聽器ListSelectionListener用法示例

    Java Swing中JList選擇事件監(jiān)聽器ListSelectionListener用法示例

    這篇文章主要介紹了Java Swing中JList選擇事件監(jiān)聽器ListSelectionListener用法,結(jié)合具體實例形式分析了中JList選擇事件監(jiān)聽器ListSelectionListener的功能、使用方法及相關(guān)注意事項,需要的朋友可以參考下
    2017-11-11
  • Java 動態(tài)代理與CGLIB詳細(xì)介紹

    Java 動態(tài)代理與CGLIB詳細(xì)介紹

    這篇文章主要介紹了 Java 動態(tài)代理與CGLIB詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評論

盐城市| 始兴县| 金溪县| 科尔| 扬中市| 南康市| 姚安县| 闻喜县| 宁安市| 淮安市| 上杭县| 湖口县| 邹城市| 彭泽县| 芜湖市| 尚义县| 东辽县| 行唐县| 清水河县| 萝北县| 望奎县| 北川| 织金县| 文山县| 绥中县| 定日县| 万年县| 邢台市| 犍为县| 紫云| 威信县| 厦门市| 教育| 宁乡县| 栾川县| 布尔津县| 资阳市| 鄂托克前旗| 永宁县| 烟台市| 海丰县|