类是如何被加载的?

对于类的加载,应该掌握以下几个问题:

  • 类的执行过程
  • 类的加载过程
  • 三种类加载器的职责
  • 类的加载机制
  • 自定义类加载器

类的执行过程,首先我们通过下图了解一下类是如何被运行的。

在这里插入图片描述

1). Java编译器把java源代码(source)翻译为计算机可以读懂的二进制文件,即.class文件,也叫做字节码文件。
2). 然后类加载器加载.class文件,通过JVM分析,加载到内存中,不同类型的变量或者是类的信息会被加载到不同的存储空间上,例如:实例对象或数组会在堆中分配空间存储,基本类型存储在栈上。每一个被加载过的类都会存储在JVM的缓存中。
3). 通过执行引擎,进行解释执行,这里的执行引擎就是Java解释器,Java 解释器负责将字节码文件(.class文件)翻译成具体操作系统平台下的机器代码,按照从上至下的顺序,依次执行。

类的加载过程

在这里插入图片描述

1)加载、验证、准备、初始化这四个阶段的发生顺序与图中所描述的顺序相同,唯独解析阶段,它是不太固定的,它有可能发生在初始化之前,但是也有可能发生在初始化之后;
2)这几个阶段也并不是完全执行完某一个阶段,才可以发生下一个阶段,大部分情况下都是交叉混合进行的。

类加载器

JVM预定义了三种类加载器,分别是引导类加载器、拓展类加载器、应用类加载器
在这里插入图片描述
双亲委派

在这里插入图片描述

自定义一个类加载器,都需要做什么。

1)我们需要通过类的名字,找到对应的.class文件
2)然后将.class文件转为二进制数据
3)最后利用二进制数数据生成Class对象

继承Java中的ClassLoader类–>重写findClass()方法–>在findClass()方法里调用defineClass()将二进制数据转为Class对象。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值