首页 > 代码库 > JVM类加载(1)—加载

JVM类加载(1)—加载

1、加载:

查找并加载类,将.class文件中的二进制数据读入到内存中,放在运行时数据区的方法内,然后在堆内创建一个java.lang.class对象用来封装类在方法区内的数据结构。并且向程序员提供了访问方法区内的数据结构的接口,程序中类的实例通过getClass()方法获取类在堆中的class对象,通过class对象可以完成对方法区中类数据结构的访问。

class文件的加载方式:

(1)、本地系统加载

(2)、网络下载.class文件

(3)、jar包、zip文件中获取

(4)、从专有数据库中提取.class文件

(5)、将Java源文件动态编译为.class文件

类加载器的类型:

Java虚拟机自带的加载器

(1)、根类加载器(BootStrap),C++实现,Java程序员无法在代码中获取到该类

(2)、扩展类加载器(Extension),Java代码实现

(3)、系统类加载器(System),又叫应用加载器,Java代码实现

用户自定义的加载器

继承java.lang.ClassLoader,用户可以定制类的加载方式

Java规范允许类加载器在预料到某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到class文件缺失或存在错误,类加载器会在首次主动使用该类时才报告错误(LinkageError错误), 如果这个类一直没有被程序使用,那么类加载器就不会报错。

类被加载进内存之后后就进入连接阶段。

JVM类加载(1)—加载