2021
09-19
09-19
分析Java中的类加载问题
目录一、Java类的加载顺序二、类加载过程三、被动引用中和类静态初始化的关系四、类加载器双亲委派一、Java类的加载顺序引用1个网上的经典例子,并做稍许改动,以便大家更好地理解。publicclassAnimal{privateinti=test();privatestaticintj=method();static{System.out.println("a");}Animal(){System.out.println("b");}{System.out.println("c");}p...
继续阅读 >
目录1.类加载阶段1.1加载阶段1.2链接阶段准备1.3初始化阶段1.4练习2.类加载器2.1启动类加载器2.2扩展类加载器2.3双亲委派模式2.4线程上下文类加载器2.5自定义类加载器3.总结1.类加载阶段1.1加载阶段将类的字节码载入方法区中,内部采用C++的instanceKlass描述java类,它的重要field有:_java_mirror即java的类镜像,例如对String来说,就是String.class,作用是把klass暴露给java...
前言我们知道,Java项目编译后会生成许许多多的class文件,class文件保存着类的描述信息。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转化解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存位置,他的整个生命周期包括:加载验证准备解析初始化使用卸载这七个阶段。画个图就是下面这样:其中,类加...