1. 程式人生 > 其它 >類載入器 --classLoader

類載入器 --classLoader

類載入器

類載入的作用:將class檔案位元組碼內容載入到記憶體中,並將這些靜態資料轉換成方法區的執行時資料結構,然後在堆中生成一個代表這個類的java.lang.Class物件,作為方法區中類資料的訪問

載入器的分類

  • 引導類載入器:用C++編寫的,是JVM自帶的類載入器,負責Java平臺核心庫,用來裝載核心類庫。該載入器無法直接獲取
  • 擴充套件類載入器:負責jre/lib/ext目錄下的jar包或-java.ext.dirs指定目錄下的jar包裝入工作庫
  • 系統類載入器:負責java-classpath或-Djava.class.path所指的目錄下的類與jar包裝入工作,是最常用的載入器
    自定義類是系統類載入器載入

    系統內建類,是根載入器載入
package Base01.reflection.Demo03;

public class Demo01 {
    public static void main(String[] args) throws ClassNotFoundException {
        //獲取系統類的載入器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        System.out.println(systemClassLoader);

        //獲取系統類載入器的父類載入器————>擴充套件載入器
        ClassLoader parent = systemClassLoader.getParent();
        System.out.println(parent);

        //獲取擴充套件載入器的父類載入器————>根載入器
        ClassLoader parent1 = parent.getParent();
        System.out.println(parent1);
        System.out.println("===========================");

        //自定義類是系統類載入器載入
        ClassLoader demo01 = Class.forName("reflection.Demo03.Demo01").getClassLoader();
        System.out.println(demo01);
        System.out.println("===========================");
        //系統內建類,是根載入器載入
        ClassLoader obj = Object.class.getClassLoader();
        System.out.println(obj);
    }
}