当前位置: 代码迷 >> 综合 >> Java类加载器(Class Loader)之详解
  详细解决方案

Java类加载器(Class Loader)之详解

热度:3   发布时间:2023-12-06 13:44:25.0

本文主要总结一下我对Java类加载器(Class Loader)认识,如有不准确之处还望大侠不吝赐教!

关键字:Java,类加载器(Class Loader)

主要从如下几个部分进行介绍:

  • 类加载的过程
  • 类加载器的层级
  • 类加载器的操作原则
  • 为什么要个性化类加载器
  • 其它相关问题

类加载的过程

类加载器的主要工作就是把类文件加载到JVM中。如下图所示,其过程分为三步:

  1. 加载:定位要加载的类文件,并将其字节流装载到JVM中;
  2. 链接:给要加载的类分配最基本的内存结构保存其信息,比如属性,方法以及引用的类。在该阶段,该类还处于不可用状态;
    • 验证:对加载的字节流进行验证,比如格式上的,安全方面的;
    • 内存分配:为该类准备内存空间来表示其属性,方法以及引用的类;
    • 解析:加载该类所引用的其它类,比如父类,实现的接口等。
  3. 初始化:对类变量进行赋值。


类加载器的层级

下图虚线以上是JDK提供的几个重要的类加载器,详细说明如下:

  • Bootstrap Class Loader: 当启动包含主函数的类时,加载JAVA_HOME/lib目录下或-Xbootclasspath指定目录的jar包;
  • Extention Class Loader:加载JAVA_HOME/lib/ext目录下的或-Djava.ext.dirs指定目录下的jar包。
  • System Class Loader:加载classpath或者-Djava.class.path指定目录下的类或jar包。


需要了解的是?