一、Class对象的生命周期
.class文件是如何加载到内存中:.class文件是ClassLoader通过IO将文件读到内存,再通过双亲委派的模式进行Loading,再Linking、以及Initializing,代码调用等一系列操作后,进行GC,组成完整的生命周期;
二、双亲委派模式(Loading的过程):
1、类加载器的层级及说明:
2、类加载器代码验证:
- 查看一个对象使用哪个ClassLoader进行类加载的:
public static void main(String[] args) {
// 引导类加载器,打印结果为null
// 当获取类加载器返回null时,说明当前类的类加载器是Bootstrap类加载器,也就是最顶层的类加载器
//最顶层的Bootstrap类加载器加载的是JDK核心的类,C++实现的
System.out.println("Bootstrap ClassLoader Name:" + String.class.getClassLoader());
//HKSCS的包是在charsets.jar包下:sun.awt.HKSCS
System.out.println("Bootstrap ClassLoader Name:" + HKSCS.class.getClassLoader());
//扩展类加载器,jdk路径下C:\Program Files\Java\jdk1.8.0_212\jre\lib\ext的jar包里面的类是由Extension ClassLoader进行加载的
System.out.println("Extension ClassLoader Name:" + DNSNameService.class.getClassLoader());
//应用程序类加载器,程序员自己写的类由AppClassLoade