JVM系列2 类加载

2019-02-15  本文已影响0人  莫小归

参考:
JVM类加载机制:https://www.jianshu.com/p/a9d8c1a37b8c
JVM类加载机制及类加载器:https://www.jianshu.com/p/f997fa5d1ce9
浅谈双亲委派模型:https://www.jianshu.com/p/353c26c744df

一.JVM类加载机制

1.类加载的定义
2.类的生命周期
类的生命周期
3.类加载的条件
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 class NotInitialization {  
    public static void main(String[] args) {  
        System.out.println(SubClass.value);  
    }  
} 
//输出
SuperClass init!  
123 

2)通过数组定义引用类,不会触发此类的初始化

public class SuperClass {  
    static{  
        System.out.println("SuperClass init!");  
    }  
    public static int value = 123;  
}  
public class NotInitialization {  
    public static void main(String[] args) {  
        SuperClass[] scs = new SuperClass[10];  
    }  
}
//不会执行SuperClass类中static块里的System.out.println("SuperClass init!");  
输出结果为空

3)常量在编译阶段会存入调用类的常量池,不会触发定义该常量的类的初始化

public class ConstClass {
    static{
        System.out.println("ConstClass init!");
    }
    public static final String HELLOWORLD = "hello world";
}
public class NotInitialization {
    public static void main(String[] args) {
        System.out.println(ConstClass.HELLOWORLD);
    }
}
hello world

上述代码在编译阶段经常量传播优化,已将ConstClass类的HELLOWORLD常量值存入NotInitialization类的常量池。以后NotInitialization对于常量ConstClass.HELLOWORLD的引用都被转化为NotInitialization类对自身常量池的引用了。实际上NotInitialization的Class文件之中已经不存在ConstClass类的符号引用入口了。

4.类加载过程
public class Parent {  
    public static int A = 1;  
    static{  
        A = 2;  
    }  
}    
public class Sub extends Parent{  
    public static int B = A;  
}   
public class Test {  
    public static void main(String[] args) {  
        System.out.println(Sub.B);  
    }  
} 
父类子类加载顺序

二.类加载器

1.启动类加载器(Bootstrap ClassLoader)
2.其他类加载器
3.双亲委派模型
双亲委派加载机制

三.常见面试题

1.可不可以自己写一个String类?
2.能否在加载类时,对类的字节码进行修改?

常恐秋风早,飘零君不知

上一篇 下一篇

猜你喜欢

热点阅读