当我们编写好一个类的时候他是.java文件之后编译后变成.class文件,该class文件就会通过某种方式发送到jvm里面jvm通过类加载器对其进行加载过程大致分为下列几种
- 加载 -> 加载通过类的全限定类名获取到当前类的二进制文件,在堆内存创建当前类的对象,将当前类的静态数据结构存入方法区
- 连接 -> 连接分为下面三个步骤
1:验证:验证过程就是检查当前class文件是否存在问题,或者对jvm有无攻击性
2:准备:准备阶段是将类里面的静态变量分配空间,这时候赋值是默认值,如果是被final修饰的就直接赋真实值,因为其是不会改变的.
3:解析:解析我没太弄明白,大概意思就是将内存里面的符号引用改变成地址引用,只要是解析成了地址引用那么当前类一定存在于内存中 - 初始化:初始化就会给类的静态变量赋真实值.