JVM的类加载机制

2016-11-29  本文已影响0人  VikingOldYoung

类加载机制

类的加载机制

具体过程分析

示例

类的主动引用(一定会发生初始化)

  1. new一个类的对象(肯定会先初始化)
  2. 调用类的静态成员(除了final常量)和静态方法
  3. 使用java.lang.reflect包的方法对类进行反射调用
  4. 当虚拟机启动,java Hello,则一定会初始化Hello类,即会先初始化main方法所在的类
  5. 如果父类还没有初始化则会先初始化父类,在初始化子类。

类的被动引用(不会发生类的初始化)

  1. 当访问一个静态域时,只有真正声明该域的类才会被初始化(通过子类引用父类静态变量,子类不会被初始化)
  2. 通过数组定义类引用,不会触发此类的初始化(例:A[] as=new A[10];此时A并不会初始化。)
  3. 使用常量并不会触发此类的初始化(常量在编译时就存入调用类的常量池中了)
上一篇 下一篇

猜你喜欢

热点阅读