面试官:请你谈谈JVM类加载器机制和双亲委派模型

Java代码在编译好之后会编程.class字节码文件,加载到Java虚拟机中运行,本篇主要关于类加载器机制。

Java中的类加载器大致可以分为两类,一类是系统提供的,一类是java应用开发人员编写的。系统提供的类加载器主要有以下三个:

1、启动类加载器:加载的是lib目录中的类加载出来,包名是java.xxx(如:java.lang.Object)

面试官:请你谈谈JVM类加载器机制和双亲委派模型_第1张图片

2、应用程序加载器:加载的是lib/ext目录下的类,包名是javax.xxx(如:javax.swing.xxx)

 

3、应用程序类的加载器:这个加载器就是ClassLoader的getSystemClassLoader的返回值,这个也是默认的类加载器。

自定义类加载器:个性化处理

遵循树形结构:

面试官:请你谈谈JVM类加载器机制和双亲委派模型_第2张图片

双亲委派机制

  双亲委派机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此,只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。

面试官:请你谈谈JVM类加载器机制和双亲委派模型_第3张图片

双亲委派模型的优点:

面试官:请你谈谈JVM类加载器机制和双亲委派模型_第4张图片

面试官:请你谈谈JVM类加载器机制和双亲委派模型_第5张图片

总结:

双亲委派模型的意义在于不同的类之间分别负责所搜索范围内的类的加载工作,这样能保证同一个类在使用中才不会出现不相等的类,举例:如果出现了两个不同的Object,明明是该相等的业务逻辑就会不相等,应用程序也会变得混乱。

面试官:请你谈谈JVM类加载器机制和双亲委派模型_第6张图片

 

 

你可能感兴趣的:(Java进阶学习)