1.类生命周期:
加载、连接(验证、准备、解析)、初始化、使用、卸载
对类初始化的时机:
1)遇到new,getstatic,putstatic,invokestatic这四条字节码指令
2)反射
3)使用子类时如果父类未初始化
4)虚拟机启动时初始化包含main方法的类
2.类加载器
将类的加载过程放到java虚拟机外部实现,如applet的加载
加载器类别:
1)Bootstrap ClassLoader 将<JAVA_HOME>/lib或classpath中的类加载到虚拟机内存中,无法被程序直接引用
2)Extension ClassLoader加载<JAVA_HOME>/lib/ext中的类,可以使用程序调用
3)Application ClassLoader负责加载类路径上的类
加载器的双亲委派模型
B-E-A-U
工作过程:类加载器收到加载请求不会自己尝试加载,而是把这个请求委派给父类加载器,只有在父类无法加载才会自己去加载。不是以继承的关系来实现,而是以组合的关系来复用