公众号:架构师与哈苏
关注公众号进入it交流群! 公众号:架构师与哈苏 不定时都会推送一些实用的干货。。。

Class文件需要加载到jvm虚拟机中之后才能运行和使用。

jvm加载Class文件的步骤为:加载->连接(验证->准备->解析)->初始化->使用->卸载

加载

加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从Class文件获取,这个即可以从ZIP包中读取(比如从jar包和war包中读取),也可以在运行时计算生成(动态代理),也可以由其他文件生成(比如将JSP文件转换成对应的Class类)。

验证

这一阶段的主要目的是为了确保Class文件的字节流中包含的信息是否符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。

准备

正式为类变量(static变量)分配内存并设置类变量初始值的阶段,这些内存都将在方法区中进行分配。注意此时的设置初始值为默认值,具体赋值在初始化阶段完成。

解析

虚拟机常量池的符号引用替换成直接引用(地址引用)的过程。

初始化

初始化阶段是执行类构造器< clinit >()方法的过程。类构造器< clinit >()方法是由编译器自动收集类中的所有类变量赋值动作和静态语句块(static块)中的语句合并产生的。

posted on 2021-08-16 16:42  公众号/架构师与哈苏  阅读(37)  评论(0编辑  收藏  举报