类加载机制之ClassLoader
2017-09-15 10:22
288 查看
基础知识
JVM如何区分不同类型? JVM通过类全名+加载该类的ClassLoader区分的;同一个ClassLoader能够重复加载同一个类?同一个ClassLoader不允许多次加载一个类的,否则会报java.lang.LinkageError;
JVM只提供了加载类的方法,但并没有提供卸载的方法(主动回收,可预期),当发生FGC时才被回收(被动回收,不可预期);
ClassLoader类继承关系
注意区别“ClassLoader类继承关系”与“类加载器组织关系”,下图是从Java语法角度说明的ClassLoader相关类之间的继承关系:ClassLoader重要方法
loadClass(重要):双亲委托机制的体现,先委托父类加载器加载,加载不到再自己加载,如果想自定义类加载机制需要继承ClassLoader,覆盖loadClass方法实现。findClass:当前类加载器查找类的逻辑,当父类加载器没有加载到指定类时被调用。
ClassLoader.loadClass()过程
查看当前ClassLoader是否已加载该类:以ClassLoader和类全名为key到SystemDictionary 查询;若查询不到则委托父类加载器加载;
若仍加载不到,则调用findClass();
相关文章推荐
- JVM类加载机制(ClassLoader)源码解析(2)
- jvm 类加载机制(ClassLoader)学习总结1
- Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC
- Java ClassLoader加载机制
- JVM类加载机制浅析 (How ClassLoader load class file )
- Java ClassLoader加载机制理解 实际例子
- JVM类加载机制-ClassLoader
- JVM类加载机制(ClassLoader)源码解析(3)
- java 的类加载机制(classloader)
- ClassLoader加载机制
- Tomcat WebappClassLoader 类加载机制源码分析
- Java ClassLoader加载机制理解
- JVM类加载机制(ClassLoader)源码解析
- Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC
- Java中的ClassLoader 动态加载机制
- Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC
- Java类加载机制ClassLoader之ContextClassLoader
- Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC
- JVM类加载机制(ClassLoader)源码解析(1)
- 类加载机制之ContextClassLoader