本次说说Class加载器,类的初始化,JDK自带故障排查工具介绍。
JVM结束生命周期: 1.System.exit() 直接就退出了 2.正常运行完 3.异常中止 4.手动kill进程
验证
验证类的格式是否正确 (一)文件格式的验证,class (二)元数据验证,是否有父类,有父类先加载父类,一般的类都有父类,object (三)字节码验证,数据流是不是合法的符合逻辑的。方法体进行检测 (四)符号引用验证,访问的时候判断是否有权限来进行引用
准备
为类的静态变量(static修饰)分配内存(方法区),并将启初始化改成默认值
解析
常量池中的引用替换为直接引用
1.如果这个类还没有被加载和链接,那就先加载和链接 2.如果类存在直接的父类,先初始化直接父类 3.如果类存在初始化语句,那就依次初始化语句
PS:了解好类的初始化,对于开发尤为重要,对于自带的故障排查工具,对于内存分析的时候很有用。