网易首页 > 网易号 > 正文 申请入驻

拿下阿里巴巴面试, 10分钟了解JVM类加载过程!

0
分享至


各位小伙伴们,大家好!今天小米要和大家一起深入探讨一道常见的面试题目:JVM类加载过程。作为Java程序员,对于JVM的类加载过程有着深入的了解,不仅是面试中的热门话题,更是我们日常开发中不可或缺的一环。那么,究竟JVM的类加载过程包括哪几个阶段呢?接下来,我们就一起来揭开这个神秘的面纱!

加载阶段

在程序运行时,当需要使用某个类时,JVM会通过类加载器(ClassLoader)来加载这个类。类加载阶段主要负责将类的.class文件加载到内存中,并创建一个代表这个类的Class对象。

在加载阶段,主要包括以下几个步骤:

加载:通过类的全限定名获取定义此类的二进制字节流。

连接:连接阶段又包括验证、准备和解析三个阶段。

验证阶段

在验证阶段,主要是对字节流进行验证,确保其符合JVM规范,不会对JVM造成危害。验证阶段主要包括以下几个方面的验证:

文件格式验证:验证字节流是否符合Class文件格式规范。

元数据验证:对类的元数据信息进行验证,确保其符合语言规范。

字节码验证:对字节码流进行验证,保证其符合JVM规范。

符号引用验证:对类中的符号引用进行验证,确保其能正确解析为已有的类型、字段或方法。

准备阶段

准备阶段是JVM类加载过程中的重要步骤之一,它为类的静态变量分配内存空间,并将这些变量初始化为默认值,为后续的初始化阶段做准备。

在准备阶段,JVM会为类的静态变量分配内存空间,这些静态变量通常被存储在方法区中。与实例变量不同,静态变量属于类,而不是对象,因此它们的内存空间在类加载时就已经被分配。

除了分配内存空间外,JVM还会对这些静态变量进行默认初始化。默认初始化是指JVM会根据静态变量的类型,为其赋予一个默认值。对于基本数据类型,例如int、float、boolean等,其默认值通常为0或者false;对于引用类型,其默认值为null。

需要注意的是,在准备阶段,JVM只会为静态变量分配内存空间,并进行默认初始化,不会执行静态变量的初始化表达式。这意味着,即使静态变量在类中定义时有赋值语句,也不会在准备阶段执行。

解析阶段

解析阶段是JVM类加载过程中的重要步骤之一,其主要任务是将类、接口、字段和方法的符号引用转换为直接引用,以加快后续的访问速度。

在解析阶段,JVM会对类、接口、字段和方法的符号引用进行解析,将这些符号引用转换为直接引用。符号引用是在编译阶段生成的,它们是一种标识,用来描述被引用的类、接口、字段或方法,但并不指向具体的内存地址。而直接引用则是指向具体内存地址的指针或者偏移量,可以直接被JVM使用。

解析阶段的主要工作包括:

将类和接口的符号引用解析为直接引用,这样可以快速定位到目标类或接口。

将字段的符号引用解析为直接引用,这样可以快速定位到目标字段,并访问其值。

将方法的符号引用解析为直接引用,这样可以快速定位到目标方法,并执行相应的代码。

通过解析阶段,JVM可以将类、接口、字段和方法的符号引用转换为直接引用,这样在程序运行时就可以直接使用这些引用,而不需要每次都进行符号解析,从而提高了程序的运行效率。

需要注意的是,解析阶段并不是必需的,JVM可以选择在需要的时候进行解析,也可以选择在加载阶段或者初始化阶段进行解析。这取决于具体的实现方式和优化策略。

初始化阶段

初始化阶段是JVM类加载过程中的最后一个阶段,也是类加载过程中最重要的一环。在初始化阶段,JVM会执行类构造器()方法,对类的静态变量进行初始化赋值,执行静态初始化块中的代码,以完成类的初始化工作。

首先,初始化阶段会执行类构造器()方法,该方法是编译器自动生成的,用于对类的静态变量进行初始化。这个方法会按照静态变量的声明顺序执行,并且在多线程环境下保证线程安全。

其次,初始化阶段会执行静态初始化块中的代码,静态初始化块是在类加载时执行的一段代码,它可以用于对静态变量进行复杂的初始化操作,或者执行一些其他需要在类加载时完成的任务。

需要注意的是,初始化阶段是按照初始化顺序依次执行的,并且只会执行一次。如果一个类已经被初始化过了,那么在后续的加载过程中不会再次执行初始化阶段,即使有多个类加载器加载了相同的类也是如此。

初始化阶段的目的是确保类的静态变量被正确初始化,并且执行一些必要的初始化操作,以使类可以正常使用。在程序运行过程中,如果需要访问某个类的静态变量或者静态方法,那么这个类必须经过初始化阶段,否则会抛出java.lang.ExceptionInInitializerError异常。

到了这一阶段,类加载过程才真正完成,我们可以安心地使用这个类了。

通过上面的分析,我们可以看出,JVM的类加载过程包括加载、验证、准备、解析和初始化五个阶段。每个阶段都有着特定的任务和作用,保证了类的正确加载和使用。对于我们Java程序员来说,了解JVM的类加载过程不仅可以在面试中脱颖而出,更可以帮助我们更好地理解Java程序的运行机制,提高我们的编程水平。


特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
女排奥运分档确定:中国3档!意大利巴西1档,上上签+下下签曝光

女排奥运分档确定:中国3档!意大利巴西1档,上上签+下下签曝光

我爱英超
2024-06-16 21:56:19
越闹越大!南方医科大无法自圆其说,举报学生身份被扒出

越闹越大!南方医科大无法自圆其说,举报学生身份被扒出

看晓天下事
2024-06-16 13:10:53
微博红毯:王一博不化妆上热搜!面无表情 满脸沧桑!被质疑戴假发

微博红毯:王一博不化妆上热搜!面无表情 满脸沧桑!被质疑戴假发

娱记掌门
2024-06-16 22:59:44
妻子出轨坚持要离婚,被丈夫拿运动鞋抽打伤重身亡,丈夫获刑10年

妻子出轨坚持要离婚,被丈夫拿运动鞋抽打伤重身亡,丈夫获刑10年

潇湘晨报
2024-06-16 19:10:07
地方财政趋紧,重新恢复种田交公粮,农民还会愿意种地吗?

地方财政趋紧,重新恢复种田交公粮,农民还会愿意种地吗?

原生态乡村
2024-06-15 16:37:28
【欧洲杯球评】终于颠覆了平庸剧本

【欧洲杯球评】终于颠覆了平庸剧本

奔流新闻
2024-06-17 09:33:59
赵丽颖古早黑历史曝光,惊人往事让人不敢相信,疑似没文化还当三

赵丽颖古早黑历史曝光,惊人往事让人不敢相信,疑似没文化还当三

花哥扒娱乐
2024-04-18 22:17:33
突发!维维集团遭税务深度调查,税警30年回溯追踪,内幕大揭秘!

突发!维维集团遭税务深度调查,税警30年回溯追踪,内幕大揭秘!

户外阿崭
2024-06-17 08:27:40
四个永不倒闭的行业,选择对了就能过上无忧无虑的生活!

四个永不倒闭的行业,选择对了就能过上无忧无虑的生活!

趣说世界哈
2024-06-16 07:55:06
真人真做的生猛风月片,再也看不到了

真人真做的生猛风月片,再也看不到了

剧透电影
2024-06-16 16:32:09
祸害人三年的新冠消失了,四大奇怪现象却出现了,很多人没察觉

祸害人三年的新冠消失了,四大奇怪现象却出现了,很多人没察觉

李昕言温度空间
2024-04-19 21:12:55
“富贵没我份,凭什么打仗要我去”的言论,是对社会不公的回应吗

“富贵没我份,凭什么打仗要我去”的言论,是对社会不公的回应吗

妮子说美食
2024-06-16 12:22:43
iPhone16ProMax王炸登场:看完真想砸了手里的iPhone15Pro

iPhone16ProMax王炸登场:看完真想砸了手里的iPhone15Pro

最潮家居评
2024-06-17 02:06:42
苹果发布iOS18.0,续航优化难以置信,信号终于完美,值得升

苹果发布iOS18.0,续航优化难以置信,信号终于完美,值得升

花生评测
2024-06-14 16:51:50
各地开始追缴欠税,30年前的旧账也要算!该不该对企业那么严?

各地开始追缴欠税,30年前的旧账也要算!该不该对企业那么严?

王五说说看
2024-06-16 10:42:12
《玫瑰的故事》播出一半后才发现,刘亦菲根本不是天选的“玫瑰”

《玫瑰的故事》播出一半后才发现,刘亦菲根本不是天选的“玫瑰”

兰子记
2024-06-15 20:36:41
我国无偿献血人次和总量再创新高

我国无偿献血人次和总量再创新高

金台资讯
2024-06-17 06:19:08
台媒爆料称,大S疑似在幕后操纵!让汪小菲与孩子共度父亲节

台媒爆料称,大S疑似在幕后操纵!让汪小菲与孩子共度父亲节

综艺拼盘汇
2024-06-16 23:56:04
难怪有人对父母感到心寒!看了网友的分享,心酸得想大哭一场

难怪有人对父母感到心寒!看了网友的分享,心酸得想大哭一场

镜头时光
2024-06-11 00:54:32
42岁凯特王妃灿烂笑容重现!瘦成“纸片人”,比9岁夏洛特还要薄

42岁凯特王妃灿烂笑容重现!瘦成“纸片人”,比9岁夏洛特还要薄

译言
2024-06-15 18:51:40
2024-06-17 09:52:49
范范的简单味道
范范的简单味道
经典搞笑,每日乐一乐
1316文章数 2536关注度
往期回顾 全部

科技要闻

OpenAI可能会迎来重大变化

头条要闻

牛弹琴:乌和平峰会结束后 泽连斯基谈及中国改口了

头条要闻

牛弹琴:乌和平峰会结束后 泽连斯基谈及中国改口了

体育要闻

欧洲杯15亿豪阵险翻车:半场梦游 王牌打废

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

枝江酒业的补税单,张道红的下马威

汽车要闻

售17.68万-21.68万元 极狐阿尔法S5正式上市

态度原创

艺术
游戏
健康
时尚
本地

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

陶德:《星空》玩家量已破1400万 对DLC很兴奋

晚餐不吃or吃七分饱,哪种更减肥?

夏季流行浅色系穿搭,这些技巧你要学会

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

无障碍浏览 进入关怀版