1、什么是JAVA类加载器子系统?
JAVA类加载器子系统的目的是将.class字节码文件加载到JVM内存中,并且它不负责判断程序能不能执行。
2、类加载的过程?
A:装载
B:链接
a:检查
b:准备
c:解析
C:初始化
3、执行初始化的情况?
A:初始化一个类的时候,即new一个对象
B:利用Class.forName()反射类
C:给静态变量赋值
D:给静态方法赋值
E:初始化一个类的子类
F:JVM启动时
4、类加载的三种形式?
A:JVM实例初始化加载
B:Class.forName()反射加载
C:classLoader.LoaderClass()加载(不会自动加载静态变量,方法,块)
5、类加载器?
注:类加载器也是Java类,因为其它Java类的类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是java类,这个就是BootStrap。BootStrap它是嵌套在Java虚拟机内核中的,jvm启动,这个类就会启动,它是由c++语言编写的。
6、双亲委派模式加载类?
双亲委派的意思是指:加载当前类的时候,首先会将这个任务交给该类加载器的父类去执行,如果该类在此之前已经加载过,则直接返回该类的实例引用。如果到最后前面都没能找到该类已经加载,那起始类加载器就会尝试自己加载,默认的加载器是System/App类加载器。
7、双亲委派模式加载类的好处?
例:如果当前要加载类A,假设A已经被加载完成在内存中存在了一份A,那么再次加载它的时候,不是用这种模式的话,是不是就会存在两份相同的A了?显然这样是不科学的。