18.1.2 类的加载
类加载
当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载
、连接
、初始化
三个步骤来对该类进行初始化。如果没有意外,JVM
将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载
或类初始化。
类加载指的是将类的class
文件读入内存,并为之创建一个java.lang.Class
对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class
对象。
系统中所有的类实际上也是实例,它们都是java.lang.Class
的实例。
类加载器
类的加载由类加载器完成,类加载器通常由JVM
提供,这些类加载器也是前面所有程序运行的基础,
JVM
提供的这些类加载器通常被称为系统类加载器。- 除此之外,开发者可以通过继承
ClassLoader
基类来创建自己的类加载器。
类加载来源
通过使用不同的类加载器,可以从不同来源加载类的二进制数据,通常有如下几种来源:
- 从本地文件系统加载
class
文件,这是前面绝大部分示例程序的类加载方式. - 从
JAR
包加载class
文件,这种方式也是很常见的,前面介绍JDBC
编程时用到的数据库驱动类就放在JAR
文件中,JVM
可以从JAR
文件中直接加载该class
文件。 - 通过网络加载
class
文件。 - 把一个
Java
源文件动态编译,并执行加载。
类加载器通常无须等到”首次使用”该类时才加载该类,Java
虚拟机规范允许系统预先加载某些类。
原文链接: 18.1.2 类的加载