类的加载,双亲委派机制

本文详细阐述了Java类的加载步骤,包括通过IO流加载、验证、准备、解析和初始化,以及类加载器的工作原理,特别是双亲委派机制的实现及其带来的沙箱安全和类唯一性优势。还提及了JVM的验证参数调整。

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

一.类的加载在这里插入图片描述

1.加载:
通过IO流将class文件加载到内存区域
①读取字节流
②将字节流转化成方法区的运行结构
③将类的对象加载到

2.验证:保证每个类都是可以被引用的
①校验文件格式 .class
②校验是否符合Java语言规范
③校验字节码是否合法
④校验符号引用

JVM参数:

-Xverifynone #关闭类验证

3.准备
①将静态变量分配内存
②给这些变量赋 默认
int =0,boolen =false ,引用类型=null

4.解析(静态链接
将符号引用改为直接引用:
将 静态方法 替换为所存内存的指针

可以使用以下命令查看

javap -v xxx.class >xxx.txt

5.初始化
将 静态变量 赋值

二.类加载器

1.启动类加载器
/jre/lib

2.扩展类加载器
/jre/lib/ext

3.应用程序类加载器
classpath 路径

4.自定义加载器
自己指定路径

loadClass() #实现了双亲委派机制

三.双亲委派机制

在这里插入图片描述
类的加载器,是有父子关系,但不是继承

loadClass() #实现了双亲委派机制,没有重写,最后都是执行的父类ClassLoader中的该方法

每次加载都会向父类中进行加载,如果没有父类了,就执行

findBootstrapClass() 

将类加载到磁盘中

defindClass()

在这里插入图片描述

优点:
1.沙箱安全,防止类被篡改
2.保证类的唯一性,避免重复加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值