类加载器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类加载器相关的知识,希望对你有一定的参考价值。

public class TestCL { /* * 类加载:负责将class文件(字节码)加载到内存生成Class对象 工具类。 * JDK规定3种类加载器: * 1.应用类类加载器,AppClassLoader * * 负责加载 /WEB-INF/classes (src编写后位置) 和 /WEB-INF/lib (jar保存位置) * 2.扩展类类加载器,ExtClassLoader * * 负责加载 jdk1.7.0_72\jre\lib\ext (一般没有用) * * 扩展 是 应用 的父加载器 * 3.引导类类加载器,BootstrapClassLoader * * 负责加载 jdk1.7.0_72\jre\lib --> rt.jar (runtime) * * 不是类(由非Java程序编写的) * * 引导 扩展 父类 * * 原则:全盘负责委托机制 * * 全盘负责:A类如果需要使用B类,B类不在内存,需要使用A类的类加载器,加载B类。 * * 委托机制,应用在加载前,先从扩展获取,如果有就直接使用,如果没有在加载。 * ,扩展在加载前,先从引导获取,如果有就直接使用,如果没有在加载。 * 使用此机制,可以保证一个类只能加载一次。 * * */ @Test public void demo01(){ ClassLoader cl = TestCL.class.getClassLoader(); System.out.println(cl); ClassLoader cl2 = TestCL.class.getClassLoader().getParent(); System.out.println(cl2); } @Test public void demo02(){ ClassLoader cl = DNSNameService.class.getClassLoader(); System.out.println(cl); ClassLoader cl2 = DNSNameService.class.getClassLoader().getParent(); System.out.println(cl2); } @Test public void demo03(){ ClassLoader cl = String.class.getClassLoader(); System.out.println(cl); } }

以上是关于类加载器的主要内容,如果未能解决你的问题,请参考以下文章

在 CI 模板加载器类中加载一个或多个视图

Java 类加载器

类加载器

深入理解Java虚拟机——类加载机制

类加载器

类加载器