java面试——classloader 类加载器

jvm运行流程,jvm结构

java面试——classloader 类加载器

  • JVM :英文名称(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心,具体的下文会详细说明。

  • JRE :英文名称(Java Runtime Environment),我们叫它:Java 运行时环境。它主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来的是一部分的 Java 类库。

  • JDK :英文名称(Java Development Kit),Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。

  • JVM 基本结构:类加载器,执行引擎,运行时数据区,本地接口

  • 类的加载:加载,连接(验证,准备,解析)初始化,使用,卸载

  • java面试——classloader 类加载器

  • 类加载器双亲委派模型:避免重复加载,避免安全隐患

  • JDK已有的类加载器:BootStrap Classloader:启动类加载器(C++编写的)输出是 null,Extension Classloader :扩展类加载器,继承classloader ,APP ClassLoader 系统类加载器,继承classloader,自定义类加载器 ,继承classloader

  • java面试——classloader 类加载器

  • java面试——classloader 类加载器

  • 自定义来加载器。继承Claasloader 重写findClass
    java面试——classloader 类加载器
    java面试——classloader 类加载器
    java面试——classloader 类加载器
    java面试——classloader 类加载器java面试——classloader 类加载器
    如果指定的父类加载器,先使用父类加载器去加载该类,如果父类加载器没有加载到该类,则使用自己定义的类加载器去加载该类。