Java的ClassLoader(类装载器)学习总结
1、类装载器的概念
类装载器就是寻找类的字节码文件并构造出类在JVM内部表示的对象组件。主要工作由ClassLoader及其子类负责。ClassLoader是一个非文件常重要的Java运行时系统组件。他负责在Java运行时查找和装入class字节码文件。
2、工作机制
(1)装载:查找和导入class文件。
(2)链接:执行校验,准备(为类的静态变量分配空间)和解析步骤(将符号引用解析为直接引用)。
(3)初始化:对类的静态变量、静态代码块执行初始化工作。
3、ClassLoader常用的一些方法:
(1)Class loadClass(String name)通过类的全限定类名装载类返回一个该类的Class对象。
(2)Class defineClass(String name, byte[] b, int off, int len)通过字节数组获得一个类的定义
(3)Class findSystemClass(String name)通过系统文件路径加载一个类
(4) Class findLoadedClass(String name)通过类的全限定类名确定类是否已经装载,没有装载则返回null
(5) ClassLoader getParent() 获取父装载器.
BootStrapClassLoader(采用c++编写)是ExtClassLoader的父类,ExtClassLoader又是ApplicationLoader的父类。
4、Class类
Class对象是在类的装载过程中由ClassLoader创建的,它没有公共的构造的方法。每个类装载后都会产生一个对应的Class对象,通过这个Class对象我们能通过编程的方式获取类的许多信息如:
Class Name
Class Modifies (public, private, synchronized etc.)
Package Info
Superclass
Implemented Interfaces
Constructors
Methods
Fields
Annotations