图灵Java高级开发工程师
加载:类加载阶段是由类加载器根据类文件全限定类名,来读取这个类文件的二进制字节流到JVM中,并存储在内存的方法区中,然后将其装换为一个对应的java.lang.Object对象实例。
验证:验证是否符合class文件规范;检查final类是否有子类;检查final方法是否被子类重写;检查父类和子类声明方法是否兼容等。
准备:为类中static变量分配内存空间并初始化;被final修饰的静态变量会直接赋予原值。
解析:将常量池中所有符号引用转换为直接饮用,得到类、字段或者方法在内存中的指针或偏移量,以便直接调用。
初始化:赋值static变量,执行static块;先初始化父类再初始化子类。
双亲委派:当某个类加载器需要加载类文件时,会首先把这个任务委托给他的上级类加载器,递归这个操作。如果上级的类加载器无法加载时,将这个任务退回给下一级类加载器。判断任何一级加载器加载过类文件直接返回。作用是保证每个类文件只被加载一次。