ClassLoader(类加载器):ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去
顾名思义就是用来加载类的,但是其作用不仅仅是加载类.因为对于任意一个类,都需要由加载它的类加载器和
这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器都拥有一个独立的类名称空间.
jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载.
![preview](https://i-blog.csdnimg.cn/blog_migrate/23b99fe1277d65c7de82fd8188074e33.jpeg)
如果一个类收到类加载请求,它首先请求父类加载器去加载这个类,只有当父类加载器无法完成加载时(其目录搜索范围内没找到需要的类),子类加载器才会自己去加载
使用双亲委派模型来组织类加载器之间的关系,有一个显而易见的好处就是Java类随着它的类加载器一起具备了一种带有优先级的层次关系。
例如类java.lang.Object(存放于rt.jar中),是所有类的父类,所以任意一个类启动类加载时,都需要先加载Object类。
在类加载器来看,所有的加载Object类的请求,都会逐级委托,最后都委托给Bootstrap根类加载器加载,
因此Object类在程序的各种类加载器环境中都是同一个类。(否则,系统中出现的Object类都不尽相同则会出现一片混乱)