首页 > 代码库 > 类的加载器 ClassLoader
类的加载器 ClassLoader
先说明类的加载过程:
当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过如下三个步骤来对该类进行初始化:
而关于ClassLoader:
类加载器是用来把类(class)装载进内存的。JVM 规范定义了两种类型的类加载器:启动类加载器(bootstrap)和用户自定义加载器(user-defined class loader)。 JVM在运行时会产生3个类加载器组成的初始化加载器层次结构 ,如下图所示:
举例如下:
public class TestClassLoader {
public static void main(String[] args) throws ClassNotFoundException {
ClassLoader classLoader1 = ClassLoader.getSystemClassLoader();// 获取系统类加载器
System.out.println(classLoader1);// sun.misc.Launcher$AppClassLoader@18b4aac2
ClassLoader classLoader2 = classLoader1.getParent();// 获取扩展类加载器
System.out.println(classLoader2);// sun.misc.Launcher$ExtClassLoader@dcf3e99
ClassLoader classLoader3 = classLoader2.getParent();// 尝试获取引导类加载器
System.out.println(classLoader3);// null
ClassLoader classLoader4 = String.class.getClassLoader();// 核心类库使用引导类加载器
System.out.println(classLoader4);// null
ClassLoader classLoader5 = com.cdf.reflection.Person.class.getClassLoader();// 自建类使用系统类加载器
System.out.println(classLoader5);// sun.misc.Launcher$AppClassLoader@18b4aac2
}
}
需要说明的是,常用类加载器来获取当前包下的文件:
类的加载器 ClassLoader
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。