类加载器
1.虚拟机设计团队通过把类加载阶段的“通过一个类的权限定名来获取此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类,实现这个动作的代码模块称为类加载器
起动类加载器(Bootstrap classloader)
这个类加载将存放在JPE-HOME\lip目录中的,或者被xbootclass-path参数所指向的路径中的,并且是虚拟机识别的类库加载到虚拟机内存中。启动类加载无法直接被Java程序引用
扩展类加载器(Extension classlader)
这个类加载器可以直接使用
应用程序类加载器(Application classloader)
一般程序员自定义的类。如果应用程序中没有自定义过自己的类加载器,一般情况下这个就是程序默认的类加载器
触发类加载的情况
1.new 一个对象的时候
2.访问一个类静态方法的时候
3.调用一个类静态方法的时候
4.通过反射的方式创建一个类的字节码对象时
5.创建一个子类对象的时候
6.Java命令执行一个字节码文件的时候