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

来源:互联网 发布:php url传递session 编辑:程序博客网 时间:2024/06/05 09:55

虚拟机把描述类的数据从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);}


原创粉丝点击