load class文件,双亲模型流程,类加载器的简介

本文介绍了Java加载class文件的过程,包括从本地磁盘生成到内存装载、链接(验证、准备、解析)以及初始化。接着详细讨论了双亲委派机制在确保代码安全性和正确加载中的作用。最后探讨了自定义类加载器及其如何打破双亲委派模型。
摘要由CSDN通过智能技术生成

load class文件,双亲模型流程,类加载器的简介

load class文件过程

1.(javac等命令或者操作)本地磁盘生成class文件;
2.Loading—jvm将class文件装载到内存中;
3.Linking(包含三个部分:verification-检验class文件格式是否正确,如前四位是否为魔法数(CA FE BA BE)、preparation-静态变量赋默认值(如int类型默认值是0)、resolution-将常量池中的符号引用转为内存地址中的直接引用)
4.Initializing—静态变量赋初始值。

双亲委派机制

jvm通过类加载器将类加载到内存,过程中主要使用双亲委派机制保证代码的安全性,以及正确load的内存中。

类加载器类型(jdk8):
	自定义类加载器
	application类加载器
	extention类加载器
	bootstrap类加载器

双亲委派模型流程:

JVM准备load一个class文件到内存中:
1、首先看是否由自定义类加载器,如果有,确认其是否已将加载过这个class文件,如果已加载,流程结束;如果没有加载,则进行2;
2、向上确认application类加载器是否已加载此class文件,如果已加载则流程结束;如果没有加载,则进行3;
3、向上确认extention类加载器是否已记载过此class文件,如果已加载,则流程结束;如果没有加载,则进行4;
4、向上确认bootstrap类加载器(顶级类加载器)是否加载过此class文件,如果已加载,则流程结束,如果没有加载,则进行5;
5、按照bootstrap--extention--app---自定义类加载器顺序,在对应类加载器范围内找到class文件,加载即停止整个双亲委派流程。

自定义类加载器和如何破坏双亲委派模型

自定义类加载器:

1、继承Classloader类
2、重写findClass方法,方法内部直接调用defineClass方法

破坏双亲委派模型:

1、继承ClassLoader类
2、重写loadClass方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值