Java进阶(四)类加载机制

67 篇文章 0 订阅
65 篇文章 0 订阅

文章目录

Java进阶(四)类加载机制

类加载机制

什么是类加载?
在java中,我们在写完代码后,为了做到跨平台,编译器不会直接将代码编译为机器码,而是将java文件转换为字节码文件(.class),然后将字节码文件交予不同平台下的java虚拟机。而这一阶段起作用的就是类加载机制。
更为专业的说法:
虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。

什么时候加载

那么什么时候类才会被加载呢,为了节省资源,虚拟机只有在第一次需要用到该类的时候才会加载该类。具体来说有如下几种情况:
1 · 创建该类的实例(new)或者,使用该类的静态变量(getstatic,putstatic)时。
2 · 对类进行反射调用的时候(这一部分在下面会被提到)。
3 · 初始化该类的子类时。
4. 虚拟机启动时会先加载运行主类(main)。
5. 用JDK 1.7 的动态语言支持的时候。

类加载过程

java的类加载过程分为5个阶段:载入、验证、准备、解析和初始化,一般为顺序执行,但在动态绑定的情况下,解析阶段发生在初始化阶段之后。其中验证、准备和解析也合称为连接阶段。

  1. 载入
    将字节码从不同的数据源转换为二进制字节流加载到内存中,并生成一个java.lang.Class对象。
  2. 验证
    验证该二进制字节流是否满足JVM字节码规范
  3. 准备
    为类的静态变量分配内存并初始化
  4. 解析
    将常量池中的符号引用转化为直接引用
  5. 初始化
    为类变量赋值
类加载器

Java中的类加载器分为3种:

  1. 启动类加载器
  2. 扩展类加载器
  3. 应用类加载器
    这三类是层级关系,即启动类加载器是最上层。
    当一个类加载器收到了加载类的请求,他会把请求委托给上层加载器来完成,只有上层加载器无法完成是,才会自己尝试加载这个类。
    我们也可以自定义类加载器,其位于应用类加载器的下层。

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值