JAVA类加载机制(简单版)

本文深入探讨了Java类加载过程,包括加载、验证、准备、解析和初始化五个阶段,以及类初始化的时机。同时,介绍了JVM的三种预定义类加载器和类加载的双亲委派机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是类加载
编译器将java文件转为.class文件,class文件保存着虚拟机要执行的指令(业务逻辑代码),当需要某个类的时候,JAVA虚拟机会加载CLASS文件,并创建class对象,将clss文件加载到虚拟机内存。

类加载的过程:

1.加载	 
(通过ClassLoader创建class对象 ClassLoader:它是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 Class 对象。)

2.验证  
 ( 主要是为了验证class的正确性,分为 :文件格式的验证,元数据的验证,字节码验证,符号引用验证)
 
3.准备     
( 准备阶段主要为类变量分配内存并设置初始值)

4.解析	 
  (解析阶段主要是虚拟机将常量池中的符号引用转化为直接引用的过程)
  
5.初始化 
 (在初始化阶段,主要为类的静态变量赋予正确的初始值,JVM负责对类进行初始化,主要对类变量进行初始化)

类初始化时机

1.创建类的实例,也就是new的方式
2.访问某个类或接口的静态变量,或者对该静态变量赋值
3.调用类的静态方法
4.反射( Class.forName(“XXXX”))
5.初始化某个类的子类,则其父类也会被初始化
6.直接使用 java.exe命令来运行某个主类

JVM三种预定义类型类加载器
当一个JVM启动时:分为:
1.启动类加载器
2.扩展类加载器
3.系统类加载器

类加载双亲委派机制
一个类加载器加载一个类时,首先会把加载动作委派给他的父加载器,如果父加载器无法完成这个加载动作时才由该类加载器进行加载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值