Java中Reflection机制的初步理解(一)

来源:互联网 发布:sql删除重复 编辑:程序博客网 时间:2024/06/10 22:40

ClassLoader的类加载机制

Java中程序运行过程大致是由ClassLoader将class load到CodeSegment中,关联main方法执行,其中会有其他class不断load到内存,而不是一次性加载,即为动态加载机制。
我们可以用下面这段代码来观察。

    public class TestDynamicLoading {        public static void main(String [] args) {            new A();            System.out.println("AAAAAAAAAAAAAAA");            new B();            new C();            new C();            new D();            new D();        }    }    class A{}    class B{}    class C {        static {            System.out.println("CCCCCCCCCCCCCC");        }    }    class D {        {            System.out.println("DDDDDDDDDDDDDD");        }    }

在VMarguments添加-verbose:class观察类的具体加载过程,run,可以看到load A后,先打印A后再load B。而C的static语句块只会调用一次。D的dynamic语句块会打印两次,即每次new一个对象调用一次。动态语句块可视为无条件加载到class构造方法中,不常用。

0 0
原创粉丝点击