学习JVM原理-ClassLoader的Parents Delegation Model

摘自《深入理解Java虚拟机》周志明著

考虑到Class Loader之间的父子关系,JAVA建议采用
Parents Delegation Model来实现一个Class Loader: 装载一个类时,先把这件事委托给Parent Class Loader,Parent再委托给GrandParent,如此传递,直到根 Loader; 如果根Loader能够装载,则返回装载出的类,否则一级一级往下传,一旦载出来就返回

然而这个模式并不是硬性的约束,有两种情况违反了这个模式:

  1. Bootstrap Loader需要装载一个SPI如JAXB的实现,但这些实现不在rt.jar里,因此需要调用System ClassLoader或者User Class Loader. (Thread.currentThred().getContextClassLoader() 就是干这个的)

  2. 热替换如OSGi

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.