我要写整个中文互联网界最牛逼的JVM系列教程 | 「类加载子系统」章节:类的加载过程之一:Loading

本文详细探讨了JVM中类加载的第一阶段——Loading,解释了加载过程中类的二进制字节流来源,包括从本地系统、网络、压缩包、动态代理、JSP、数据库和加密文件等不同方式。同时强调了加载阶段在方法区创建类对象作为数据访问入口的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从本讲开始,我就要来给大家详细说一下类的加载过程所蕴含的三个阶段了。

加载阶段详述

首先,我们来看一下类的加载过程的第一个阶段,即Loading阶段,翻译过来便是加载阶段。注意,这里大家一定要区分清楚这样一个概念,就是我们这里提到的类的加载过程它是一个宏观上的概念,只不过它又分为了具体的三个阶段而已,而恰恰好其中第一个阶段就是加载,很明显,此处的加载是一个狭义上的概念。说这么多,我就是希望大家能够区分清楚类的加载过程是一个宏观上的概念,而它其中的第一个阶段(即加载)则是一个狭义上的概念而已,嘿嘿🤭,你可别把它俩给整混了哟!

关于加载这一阶段,我想大家是务必要清楚地认识到如下这样三个说明的。

先来看第一个说明,即通过一个类的全限定名获取定义此类的二进制字节流。想必大家都知道字节码文件极有可能就是物理磁盘上的一个文件,而在上一讲我们也讲过了,物理磁盘上的字节码文件加载到内存当中就是以二进制流的方式来进行加载的,关于流,我想大家应该是再熟悉不过了。

然后,我们再来看一下第二个说明,即将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。注意,加载的类信息是被存放在了一块称为方法区的内存空间当中,说到方法区,我想大家应该知道它就是一个虚的概念,至于具体落地实现,则就要看JDK的版本了,在JDK 7及之前,方法区的具体落地实现被称为永久带,之后便改称为元空间了。

最后,我们来看一下第三个说明,即在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。相信只要是学过反射的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李阿昀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值