什么是类加载器,类加载器如何分类

一、类加载器

1.什么是类加载器

类加载器:负责将.class文件(存储的物理文件)加载到内存中

什么是类加载器,类加载器如何分类_第1张图片

2.类加载时机:

① 创建类的实例(对象)

② 调用类的实例方法

③ 访问类或者接口的类变量,或者为该类变量赋值

④ 使用反射方法来强制创建某个类或接口对应的java.lang.Class对象

⑤ 初始化某个类的子类

⑥ 直接使用java.exe命令来运行某个主类

3.类加载的过程

什么是类加载器,类加载器如何分类_第2张图片

加载:

① 通过一个类的全限定名获取定义此类的二进制流,即通过包名+类名,获取这个类,准备用流进行传输

② 将这个字节流所代表的静态存储结构转化为运行时数据结构,即将这个类加载到内存中

③ 在内存中生成一个代表这个类的java.lang.Class对象,任何类被使用时,系统都会为创建一个java.lang.Class对象,即加载完毕创建一个class对象

什么是类加载器,类加载器如何分类_第3张图片

验证:

链接阶段的第一步,这一阶段为了确保Class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机的自身安全,即文件中的信息是否符合虚拟机规范,有没有安全隐患

准备:

负责为类的类变量(被static修饰的变量)分配内存,并且设置默认初始化值,即初始化静态变量

什么是类加载器,类加载器如何分类_第4张图片

解析:

将类的二进制数据流中的符号引用替换为直接引用,即本类中如果用到了其他的类,此时就需要找到对应的类

什么是类加载器,类加载器如何分类_第5张图片

初始化:

根据程序员通过程序指定的主观计划去初始化类变量和其他资源,即静态变量赋值以及初始化其他资源

statac String school=“中山大学”

类加载过程小结:

当一个类被使用的时候,才会被加载到内存

类加载的过程:加载、验证、准备、解析、初始化

二、类加载分类

jdk9 以后,类加载器分类:

启动类加载器(Bootstrap ClassLoader):虚拟机内置的类加载器

平台类加载器(Platform ClassLoader):负责加载JDK一些特殊的模块

系统类加载器(System ClassLoader):负责加载用户类路径上的所指定的类库

什么是类加载器,类加载器如何分类_第6张图片

什么是类加载器,类加载器如何分类_第7张图片

jdk8 类加载器分类:

什么是类加载器,类加载器如何分类_第8张图片

什么是类加载器,类加载器如何分类_第9张图片

你可能感兴趣的:(Java基础,java,类加载器)