什么是classloader和双亲委派

作者: 程序熊大 | 来源:发表于2018-05-16 17:06 被阅读410次
  1. 父类加载器和子类加载器不一定是继承关系;
  2. 除了BootstrapLoader,每个类加载器都有一个父类加载器
  3. 类加载器之间的父子关系何时建立?在自定义加载器的构造方法编码时需要指定一个父类加载器,如果没有指定就将system classloader设置为父类加载器
  4. 在java运行时,一个java类的唯一性由全类名和它的类加载器共同决定;换句话说,在JVM运行时中,<类A,类加载器L>这种记录是唯一的。
  5. 双亲委派:某个class loader会优先委派给它的parent classloader加载类;
  6. 假设“Bar”类引用了“Foo”类,在加载Foo的时候,会把Bar的defining loader作为开始尝试loading的加载器,即在Bar的defining loader上调用loadClass()方法。
  7. 类被加载后,JVM会缓存该记录:(1)并不是每个引用都会调用loadClass方法;(2)这通过.class文件的修改时间保证,即不允许一个class loader加载已经加载的类的不同.class文件;(3)自己写的class loader必须通过ClassLoader.findLoadedClass()检查缓存。

参考资料

  1. https://stackoverflow.com/questions/2424604/what-is-a-java-classloader
  2. https://docs.oracle.com/javase/9/docs/api/java/lang/ClassLoader.html
  3. https://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html
  4. https://blogs.oracle.com/sundararajan/understanding-java-class-loading

相关文章

  • sandBox源码分析之ClassLoader

    提起classLoader,就不由自主想起了java classLoader的双亲委派模型,那么到底什么是双亲委派...

  • 安卓classloader浅析

    classloader 是采用双亲委派的方式加载所需要的类。 双亲委派:从classloader的源码分析,在加载...

  • 什么是classloader和双亲委派

    父类加载器和子类加载器不一定是继承关系; 除了BootstrapLoader,每个类加载器都有一个父类加载器 类加...

  • 为什么说SPI打破双亲委派机制

    简单介绍ClassLoader的双亲委派机制: java类通过Classloader加载,Classloader之...

  • 简单了解什么是双亲委派机制?

    什么是双亲委派机制 了解双亲委派,需要先了解下JAVA的类加载器ClassLoader,java的类加载器主要有以...

  • 类加载机制

    一:双亲委派机制ClassLoader#loadClass(ClassLoader源码[https://www.j...

  • classloader详解

    本文主要包含下面几个内容: classloader双亲委派机制以及classloader加载class的流程 cl...

  • Android 一二三代壳加固原理分析

    简介 所有的加固代码 都需要通过Classloader加载然后才可以执行 classloader介绍 双亲委派机制...

  • 类的加载(doing)

    双亲委派模型 loadClass(String,boolean)@ClassLoader -⑴查找本加载器是否已经...

  • Java ClassLoader双亲委派

    双亲委派这个名字感觉定义可读性不太高,其实就是一个自下而上、自上而下的加载过程。 那么为什么需要采用双亲委派,主要...

网友评论

    本文标题:什么是classloader和双亲委派

    本文链接:https://www.haomeiwen.com/subject/nqqmdftx.html