类的加载器及类加载过程

1、类加载器子系统作用 

  • 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。
  • ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。
  • 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)  

2、类加载器ClassLoader角色

类的加载器及类加载过程_第1张图片

  1. class  file  存放于本地硬盘上,可以理解为设计师画在纸上的模板,而最终这个模板在执行的时候是要加载到JVM当中来根据这个文件实例化出n个一模一样的实例。
  2. class  file  加载到JVM中,被称为DNA元数据模板,放在方法区。
  3. 在  .class文件  --> JVM -->  最终成为元数据模板,此过程就要一个运输工具(类装载器  Class  Loader),扮演一个快递员的角色。

3、类的加载过程 

类的加载器及类加载过程_第2张图片

类的加载器及类加载过程_第3张图片

 

public class HelloLoader {

    public static void main(String[] args) {
        System.out.println("谢谢ClassLoader加载我....");
        System.out.println("您的大恩大德,我下辈子再报!");
    }

}
D:\Java\jdk1.8.0_201\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=33838:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath D:\Java\jdk1.8.0_201\jre\lib\charsets.jar;D:\Java\jdk1.8.0_201\jre\lib\deploy.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-64.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;D:\Java\jdk1.8.0_201\jre\lib\javaws.jar;D:\Java\jdk1.8.0_201\jre\lib\jce.jar;D:\Java\jdk1.8.0_201\jre\lib\jfr.jar;D:\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;D:\Java\jdk1.8.0_201\jre\lib\jsse.jar;D:\Java\jdk1.8.0_201\jre\lib\management-agent.jar;D:\Java\jdk1.8.0_201\jre\lib\plugin.jar;D:\Java\jdk1.8.0_201\jre\lib\resources.jar;D:\Java\jdk1.8.0_201\jre\lib\rt.jar;F:\IdeaProjects\JVMDemo\out\production\chapter02 HelloLoader
谢谢ClassLoader加载我....
您的大恩大德,我下辈子再报!

Process finished with exit code 0

你可能感兴趣的:(#,类加载子系统,java,jvm,类加载器)