类初始化条件:
1、new getstatic putstatic invokestatic指令
2、反射
3、子类触发父类
4、main方法的类
类加载过程:
1、加载:类变成二进制字节流,转化为方法区的运行时的数据结构,堆中生成一个代表这个类的对象
2、验证:文件格式、接口、父子类、符号引用等
3、初始化常量值
4、解析:字段、方法、类等
5、收集static块,放到类构造器clinit执行
类加载双亲委托机制:
爸爸们先加载,加载不到才轮到儿子,所以顺序为:
1、启动类加载器
2、扩展类加载器
3、应用程序类加载器
4、自己手写的~~~