视频课程
小黑屋思过中,禁止观看!
评论并刷新后可见

您需要在视频最下面评论并刷新后,方可查看完整视频

视频课程
立即观看
付费视频

您支付费用,方可查看完整视频

¥{{user.role.value}}
课程视频
开始学习
会员专享

视频合集

深入JVM类加载全过程解析

  • 课程笔记
  • 问答交流

为了助大家掌握好JVM,需要深入到JVM的类加载全过程。

这节课我会重点讲解以下3点:

1.深入JVM类加载的7个阶段

2.类加载器双亲委托机制

3.JVM加载源码案例详解

JVM类加载的7个阶段

一个类从被加载到内存开始到它卸载,生命周期可以分为7个阶段:
深入JVM类加载全过程解析-mikechen

  1. 加载(loading)
  2. 验证(verification)
  3. 准备(preparation)
  4. 解析(resolution)
  5. 初始化(initialization)
  6. 使用(using)
  7. 卸载(unloading)

其中,加载、验证、准备、解析和初始化是类加载的过程。

类加载

 

评论交流
  1. 路正银

    count1=1,count2=0
    主要涉及或者说考察的是类的加载过程,尤其是类加载过程之中,准备阶段和初始化阶段的区别。
    在准备阶段,会给类的静态变量一个默认的初始值,在准备阶段完成之后,count1和count2的值都是0
    初始化阶段(只有类或接口被java程序首次主动使用时才初始化他们),类的静态变量会被赋予正确的初始化值。
    在当下的例子中,SingleTon是在main方法中调用的时候开始初始化的
    singleTon对象初始化完成之后,count1和count2的值变成了1
    System.out.println(“count2=” + singleTon.count2);
    这句语句count2会被赋予正确的初始化值0

    • mikechen

      这道题的核心关键考点主要是考:类在初始化的时候是先给构造方法中的属性赋值,还是类在初始化(类加载过程的最后一步)的时候赋值,最后的大致步骤主要范围以下5个步骤:

      1:SingleTon singleTon = SingleTon.getInstance();调用了类的SingleTon调用了类的静态方法,触发类的初始化
      2:类加载的时候在准备过程中为类的静态变量分配内存并初始化默认值 singleton=null count1=0,count2=0
      3:类初始化化,为类的静态变量赋值和执行静态代码快。singleton赋值为new SingleTon()调用类的构造方法
      4:调用类的构造方法后count=1;count2=1
      5:继续为count1与count2赋值,此时count1没有赋值操作,所有count1为1,但是count2执行赋值操作就变为0

  2. 李鸿翼

    count1=1,count2=0

    静态变量顺序初始化
    1. singleTon 初始化,调用构造函数 两个值都设置为1.
    2.count2 重新初始化为0