JVM学习笔记一:类加载器以及双亲委派机制

同事看到我在写这个推荐给我看一篇博客,推荐给大家https://blog.csdn.net/briblue/article/details/54973413。嗯,这篇博客关于ClassLoder这方面写的太详细了,很多地方我甚至都没接触到,要学的还很多啊,所以我就不继续写了。

 

这几天毕设答辩结束,准备把自己所学知识整理回顾下,所以懒惰的博主突然勤奋了起来。

1。首先介绍下类的唯一性:

对于任意一个类,都需要由加载它的类加载器和类的全限定名一同确定其在Java虚拟机中的唯一性。

换句话说就是,比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使两个类来源于同一个Class文件,被同一个虚拟机加载,只要加载他们的类加载器不同,那这两个类就必定不相等。

这里所指的“相等”,包括Class对象的equals()方法,isAssignableFrom()方法、isInstance()方法的返回结果,也包括使用instanceof关键字做对象所属关系判定等情况。

 

2。三种系统系统的类加载器:

 

3。双亲委派模型工作原理:

  1.当Application ClassLoader收到一个类尽在请求时,他首先不会自己去尝试加载这个类,而是将这个请求委派给父类加载器Extenstion ClassLoader去完成。

  2.当Extenstion ClassLoader收到一个类尽在请求时,他首先不会自己去尝试加载这个类,而是将这个请求委派给父类加载器Bootstrap ClassLoader去完成。

  3.如果Bootstrap ClassLoader加载失败(在<JAVA_HOME>\lib下没有找到所需类),就会让Extenstion ClassLoader尝试加载。

  4.如果Extenstion ClassLoader加载失败,就会让Application ClassLoader尝试加载。

  5.如果Application ClassLoader加载失败,就会让自定义加载器去尝试加载。

  6.如果都加载失败,就会抛出ClassNotFoundException异常。

4。双亲委派模型工作过程

  1.

 

posted @ 2019-05-29 10:06  我有点秃页  阅读(75)  评论(0编辑  收藏  举报