类加载
一、类加载的概念
我们在写一段代码之后,将其运行,显示结果,这个过程当中就涉及到了类加载。首先这段代码(源文件)被javac编译(java编译器)成字节码文件(.class文件),然后将此字节码文件加载到内存,并且对里面的数据进行校验、解析和初始化,最后形成可以被java虚拟机(JVM)直接使用的java类型,这就是虚拟机的类加载机制。
二、类加载的工具类加载器(ClassLoader)
2.1什么是类加载器
在java虚拟机外部将java类编译成二进制字节流,实现让源文件自己决定去获取所要加载的类,可自定义类加载器,这样的一个代码模块称为类加载器。
JVM中定义三种类型的类加载器
1)引导类加载器:用C++语言编写的,负责装载java的核心类库,该加载器是无法获取的
2)扩展类加载器:将jar装入工作库(jar/lib)
3)系统类加载器:负责自定义以及第三方的依赖的装入工作
三、类加载过程
类加载过程主要分为五个步骤:
加载 > 验证 > 准备 > 解析 > 初始化 > 使用 > 卸载
其中验证、准备、解析统称为链接
加载过程当中,JVM主要完成三件事情:
①通过全限定名(包名 . 类名)来获取这个类的计算机能识别的二进制字节流
②把二进制字节流所表示的静态存储结构转化为方法区的运行时数据结构
③生成这个类的java.lang.class对象,一个class对象对应着一个类