Java 类加载机制

本文详细介绍了Java的类加载机制,包括加载、验证、准备、解析、初始化、使用和卸载七个阶段,以及类加载器的层次结构。重点讲解了双亲委派模型,它确保类由对应的类加载器加载,保证了类的唯一性。同时,讨论了如何通过重写`loadClass()`来破坏双亲委派模型。

1,类加载机制

类被加载的整个过程(生命周期)

加载->验证->准备->解析->初始化->使用->卸载

类的整个加载过程是按顺序开始的,但不能理解为按顺序执行。

1 加载:通过一个类的全限名(路径+类名)来获取定义此类的二进制节流。(实现这个代码模块就是类加载器)。将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。在内存中生成一个代表这个类的java.lang.Class 对象,作为方法区这个类的各种数
据的访问入口。

2 验证:文件格式的验证,需要验证文件会不会有一些潜在的风险

3 准备:准备阶段是正式为类变量分配内存并设置类变量初始值(被static 修饰的变量)的阶段,这些变量所使用的内存都将在方法区中进行分配。

4 解析:虚拟机将常量池内的符号引用替换为直接引用的过程

5 初始化:执行类构造器方法的过程

6 使用:Java程序调用

7 卸载:生命周期结束时候被卸载

类加载器

启动类加载器(Bootstrap ClassLoader)

                    \wedge

拓展类加载器(Extension ClassLoader)

                    \wedge

应用程序类加载器(Application ClassLoader)

                    \wedge

自定义类加载器(customized ClassLoader)

2,什么是双亲委派?

作用:保证一个类可以被想对应的类加载器所加载。因为java中不同的加载器加载同一个类会产生两个类,不能保证唯一性。

对于任意一个类,都需要由它的类加载器和这个类本身一同确定其在就Java虚拟机中的唯一性

上面这种层次关系称为类加载器的双亲委派模型。我们把每一层上面的类加载器叫做当前层类加载器的父加载器,当然,它们之间的父子关系并不是通过继承关系来实现的,而是使用组合关系(现有对象进行拼装即组合产生新的具有更复杂的功能)来复用父加载器中的代码。

    双亲委派模型的工作流程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把请求委托给父加载器去完成,依次向上,因此,所有的类加载请求最终都应该被传递到顶层的启动类加载器中,只有当父加载器在它的搜索范围中没有找到所需的类时,即无法完成该加载,子加载器才会尝试自己去加载该类。

    使用双亲委派模型来组织类加载器之间的关系,有一个很明显的好处,就是Java类随着它的类加载器(说白了,就是它所在的目录)一起具备了一种带有优先级的层次关系,这对于保证Java程序的稳定运作很重要。例如,类java.lang.Object类存放在JDK\jre\lib下的rt.jar之中,因此无论是哪个类加载器要加载此类,最终都会委派给启动类加载器进行加载,这边保证了Object类在程序中的各种类加载器中都是同一个类。
 

3,破坏双亲委派模型

重新findClass()不会破坏

破坏需要重写 loadClass()

【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)内容概要:本文提出了一种基于融合鱼鹰和柯西变异的麻雀优化算法(OCSSA)优化变分模态分解(VMD)参数,并结合卷积神经网络(CNN)与双向长短期记忆网络(BiLSTM)的轴承故障诊断模型。该方法利用西储大学公开的轴承数据集进行验证,通过OCSSA算法优化VMD的分解层数K和惩罚因子α,有效提升信号分解精度,抑制模态混叠;随后利用CNN提取故障特征的空间信息,BiLSTM捕捉时间序列的动态特征,最终实现高精度的轴承故障分类。整个诊断流程充分结合了信号预处理、智能优化与深度学习的优势,显著提升了复杂工况下轴承故障诊断的准确性与鲁棒性。; 适合人群:具备一定信号处理、机器学习及MATLAB编程基础的研究生、科研人员及从事工业设备故障诊断的工程技术人员。; 使用场景及目标:①应用于旋转机械设备的智能运维与故障预警系统;②为轴承等关键部件的早期故障识别提供高精度诊断方案;③推动智能优化算法与深度学习在工业信号处理领域的融合研究。; 阅读建议:建议读者结合MATLAB代码实现,深入理解OCSSA优化机制、VMD参数选择策略以及CNN-BiLSTM网络结构的设计逻辑,通过复现实验掌握完整诊断流程,并可进一步尝试迁移至其他设备的故障诊断任务中进行验证与优化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ScreamCode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值