JVM之类加载器子系统随笔

本文详细介绍了JVM的类加载器子系统,包括类的加载过程、链接阶段的验证、准备和解析,以及初始化。讨论了加载器的分类,如引导类加载器、扩展类加载器、系统类加载器和自定义类加载器,并阐述了它们之间的关系和作用。此外,解释了双亲委派机制和自定义类加载器的实现步骤,强调了类加载的安全性和防止核心API篡改的重要性。
摘要由CSDN通过智能技术生成

类加载器子系统(class loader subsystem)

类的加载过程:class loader

loading:

1、通过一个类的全限定名称获取定义此类的二进制字节流
2、将静态存储结构转化为运行时数据结构
3、生成java.lang.class对象,作为方法区的访问入口

linking:

1、验证:确保字节流是否符合虚拟机要求;文件格式验证、元数据验证、字节码验证、符号引用验证
2、准备:为变量分配内存,设置默认初始值(零值)
3、解析:将常量池中的符号引用转换为直接引用的过程

initialization(初始化):

初始化阶段就是执行类构造器方法<clinit>()的过程,才方法不需要定义,是javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并而来.

<clinit>()不同于类的构造器

虚拟机必须保证一个类的<clinit>()方法在多线程下被同步加锁(DeadThreadTest.java)

类加载器的分类:

1、引导类加载器(Bootstrap ClassLoader)

Extension ClassLoader(扩展类加载器)
System ClassLoader(系统类加载器)他俩都是间接继承了ClassLoader

2、自定义类加载器(User-Defined C

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值