类从被加载到虚拟机内存开始到卸载内存为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载java
类必须当即初始化状况:安全
是链接阶段的第一步,这个阶段的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并不会危害虚拟机的自身安全。数据结构
文件格式验证指针
第一阶段验证字节流是否符合Class文件格式规范,并能被当前版本虚拟机处理。cdn
云数据验证对象
第二阶段对字节码描述的信息进行语义分析,确保描述信息符合Java语言要求规范。blog
字节码验证接口
第三阶段对类的方法体进行校验分析,保证被校验的方法在运行时不会出现危害虚拟机的安全事件。生命周期
符号引用验证事件
对类自身之外(常量池中的各类符号引用)的信息进行匹配校验。
正式为变量分配内存并设置初始值的阶段,这些变量使用的内存将在方法区中分配。仅包括类变量(被static修饰)不包括实例变量。赋初值是指数据类型的零值。
将常量池中的符号引用替换为直接引用。
执行类中定义的Java程序代码,初始化阶段是执行类构造器(<clinit>())方法的过程。
启动类加载器、扩展类加载器、应用程序类加载器。
双亲委派模型要求除了顶层的启动类加载器外,其他的类加载器都应当有本身的父类加载器。这里的类加载器的父子关系通常是组合关系来复用父加载器的代码。
欢迎扫码关注我 😊