大家好,又见面了,我是全栈君。
java class加载机制及对象生成机制
当使用到某个类,但该类还未初始化,未加载到内存中时会经历类加载、链接、初始化三个步骤完成类的初始化。需要注意的是类的初始化和链接的顺序有可能是互换的。
ClassLoader用于动态加载class文件到内存中。
BootStrap ClassLoader):java类加载器中最顶层的类加载器,负责加载jdk中核心的类库,如:rt.jar、resources.jar、charsets.jar等。
可通过System.out.println(System.getProperty("sun.boot.class.path"));查看。Extension ClassLoader):负责加载java的扩展类库,默认加载:JAVA_HOME/jre/lib/ext目录下的jar。App ClassLoader):负责加载应用程序classpath下的所有jar和class文件。CustomClassLoader):自定义类加载器必须继承自java.lang.ClassLoader。这就是为什么类修改后需要重启的原因。 使用双亲委派模型的优点:
当类加载完成后,系统会给为之生成一个对象;随后进入链接阶段,链接阶段负责把类的二进制数据添加到JRE中。
三个阶段:
默认初始值 JVM负责对类进行初始化,主要对类变量进行初始化
在Java中对类变量进行初始值设定有两种方式:
* 声明类变量是指定初始值
* 使用静态代码块为类变量指定初始值参考文档:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/108694.html原文链接:https://javaforall.cn