您的位置:首页 > 其它

类加载机制之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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  classloader