java类加载机制概括

前言
在我们运行java程序时,java底层进行了一系列的操作,大体有五个操作步骤,分别按照先后顺序为:加载——>验证——>准备——>解析——>初始化,下面分别来解释这五个步骤具体干了什么。
加载
jvm将我们写好的类从磁盘加载到内存中。(在我们编写java代码的时候,我们保存是将代码保存到我们的硬盘上,而在我们执行java程序的时候,就会将我们硬盘上的代码拷贝到内存中来进行操作,因为内存中操作速度更快)
验证
jvm验证字节码文件的正确性,如果我们写的代码语法有错误,在这一步就会检测出来。(jvm对代码进行分析验证,如果我们没有按照java语法来开发,例如我们程序没有以class开头,或者我们赋值类型不匹配,jvm都会分析验证出来)
准备
给类的静态变量分配内存,并赋予默认值。(jvm会先将我们定义为静态变量的类型分配内存,并将默认值赋予)
解析
将符号引用替换为直接引用。(首先来讲一下符号引用和直接引用是什么)
符号引用:假如我们main主类中new了一个student类,但是我们在加载的时候并不会去找我们student类在磁盘中的具体地址,而是以一个例如:com.xiaoqi.cn.Student;这样一个包位置来代表我们对student类的引用。
直接引用:当我们main主类中new了一个student类,我们会将student类在磁盘的位置找到,位置例如:0X06HXXXXX,这样我们就可以直接通过磁盘位置找到student类。
初始化
对类的静态变量初始化为指定的值。(在准备阶段我们对类的静态变量分配了内存空间,并赋予了默认值,而在初始化阶段我们将用我们静态变量定义的真实值把默认值替换,如果我们静态变量没有定义初始值,那他就会是默认值,这就是我们为什么new一个变量的时候他会给我们一个默认值,而不是空值)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

旷世奇才李先生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值