类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载七个阶段其中,验证准备,解析三個部分统称为连接
四种情况必须立即对类进行初始化:
1)new 静态属性 静态方法调用
3)加载子类时需要提前加载父类
4)启动JVM,main函数所在的类需要加载
文件类型:后缀名+魔数
.classclass文件是字节码文件吗文件结构
.classclass文件是字节码文件吗文件结构磁盘上存储的一个byte数组:4个byte魔数+4个byte主次版本号+瑺量池+…
第一大阶段:装载阶段-》类加载器
加载类:双亲(parent)委派模型
从子类到父类依次查找之前是否加载过这个类如果加载过,返回加载后的产物(Class对象)如果当前类加载器没有加载过这个类,向父类继续查找
如果一个类的加载器是启动类加载器,返回null
装载成功的產物当前类的Class对象(保存当前类的类信息)Java堆
验证:符合虚拟机要求,不能危害虚拟机安全
准备:给静态变量开辟内存并赋类型默认值
解析:解析阶段是虚拟机将常量池内的符号引用替换为直接引用
第三大阶段:初始化阶段