当前位置: 主页 > JAVA语言

java 类加载器-java类加载器

发布时间:2023-06-02 22:04   浏览次数:次   作者:佚名

Java类加载过程

Java类的加载是Java程序运行过程中的一部分java 类加载器,是Java虚拟机将类文件的二进制数据转换为可以被虚拟机执行的操作指令。Java类属于动态加载java 类加载器,即程序的运行过程中,当需要使用某个类时,才会将这个类加载到内存中。

类加载过程的7个阶段

Java类加载的过程分为7个阶段,分别是加载、验证、准备、解析、初始化、使用、卸载。

加载:是指查找字节码,并载入JVM中。这个阶段可以使用两种方式,一种是从本地文件系统直接加载字节码文件,二是通过网络下载远程字节码。

验证:是指验证字节码是否符合规范,包括验证字节码文件格式、元数据、字节码的语义和内部引用等,以确保JVM能够安全、正确地执行字节码。

准备:是指为类的静态变量分配内存,并设置默认值。这个过程不会执行静态赋值语句和静态代码块中的代码。

解析:是指将常量池中的符号引用替换成直接引用的过程,以使得JVM能够定位到相关的类,方法和变量在内存中的地址。

初始化:是指执行方法,包括执行静态赋值语句和静态代码块中的代码。这个过程保证了程序在使用这个类的时候,类的静态变量已经准备好,且类已经初始化。

使用:是指通过调用类的方法和访问类的变量来使用类的过程。在使用的过程中,类可以被多个线程同时使用,因此需要确保线程安全。

卸载:是指将不再需要的类从内存中卸载,释放内存空间。

java类加载过程详解(Java自定义类加载器)

类加载器

Java虚拟机定义了三种类加载器,分别是启动类加载器、扩展类加载器和应用程序类加载器。

启动类加载器:负责加载Java核心类库,如java.lang.*等。

扩展类加载器:负责加载Java的扩展类库,如javax.*等。

应用程序类加载器:负责加载程序自己编写的类。

Java类加载器采用了自下而上的双亲委托模型,这个模型可以保证安全性和各种jar包的正常运行。类的加载过程会从当前类加载器所在目录开始依次向上搜索,如果在某一层搜索到对应的类,则直接返回类,如果最后没找到,则抛出异常。

总之,类加载器和类的加载过程是Java虚拟机中不可或缺的一部分,熟悉类的加载过程和类加载器的作用,对于我们理解并发编程、Java应用开发等都有很大帮助。