深入java虚拟机-类加载机制

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,解析,初始化,最终形成可以被虚拟机执行的java文件。---->>类的加载机制

加载时机:

1,加载

2,验证
3,准备
4,解析
5,初始化
2~4步被称为连接;
什么时候必须进行初始化?
1,遇到new,getstatic,putstatic,invokestatic这四条指令时;生成这四条指令最         常见的java代码场景是:创建对象时(new关键字),读取和设置一个类的静态       字段(被final修饰,已在编译器把结果放入常量池的静态字段除外),以及调用     一个类的静态方法;
2,使用reflect包中的方法对,类进行反射调用的时候;
3,当初始化一个类的时候,发现父类还没有进行过初始化,则需要先触发对父类的初     始化;
4,当虚拟机启动时,用户需要指定一个主类(包括main方法),虚拟机会对其进行     初始化;
5,以上四种行为表示对该类进行主动引用;既然有主动引用也会有被动引用

被动引用例子:

//通过子类引用父类的静态字段不会导致子类的初始化
public class SuperClass
{
      static
      {
            System.out.println("SuperClass init");
      }
      public static int value = "123";
}

public class SubClass extends SuperClass
{
      static
      {
	    System.out.println("SubClass init");
      }
}

public static void main(String[] args)
{
	System.out.println(SubClass.value);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值