JVM之类加载相关简析

JVM之类加载相关简析

一、简介

​ 关于JVM在类加载这个部分涉及到的知识点,可以分为3个部分,即:

​ 类加载的流程、类加载器、类加载的机制

二、类加载流程

​ 类加载的流程,即当程序使用某个类时,所需要的步骤,如下:

加载:加载指把要加载类的class文件读入内存,并创建Class对象

连接:连接是把类的二进制数据合并到jre中,分3个阶段

​ 验证:检测被加载的类是否有正确的结构

​ 准备:负责为类的静态变量分配内存,设置默认值

​ 解析:将类的二进制数据中的符号引用替换为直接引用

初始化:主要是为静态变量做初始化

关于类的初始化,总结起来可以概括为一句话,什么时候使用什么时候初始化。

三、类加载器

​ 类加载器以 jdk1.8 为例,可以大致分为四种:

​ Bootstrap ClassLoader :根(启动)类加载器,负责加载Java核心类。

​ Extension ClassLoader:扩展类加载器,负责加载 jre 的扩展目录中的 Jar 包。

​ ApplicationClassLoader:应用程序类加载器,负责加载classpath相关的Jar包或属性。

​ 用户自定义类加载器

类加载器之间的父子关系没有继承的关系,而是层次的关系,JDK1.8可以理解为:

​ 根类加载器——》扩展类加载器——》系统类加载器——》用户自定义类加载器

四、类加载机制

​ 全盘负责机制:类加载器加载一个类,那么这个类相关的依赖和引用也要被加载,除非显示要使用另一个类加载器

​ 双亲委派机制:当要加载一个类时,先向上抛让父类去加载,如果父类加载不了,再由子类尝试加载

​ 缓存机制:所有被加载过得类都会有缓存,所以一旦修改了class文件,就要重启JVM,程序的修改才会生效

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值