第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

類的加載鏈接和初始化

標(biāo)簽:
Java

图片很大,点击图片不知道能不能放大

定义

加载:将class里的静态二进制存储结构转化为内存中的的运行时数据结构,并且在方法区中生成class对象作为访问类数据的入口

链接.验证:校验文件是否符合格式,类型是否正确(是否继承了final修饰的类),字节码是否正确,符号引用验证(是否能找到对应类。)

链接.准备:为类变量在方法区中分配内存并分配初始值,是类变量不是实例变量。准备阶段不执行指令,初始值为0,例如定义了private static int a = 1;这里a准备阶段的值是0,到了初始化的阶段才会执行指令变成1,如果是引用类型则是null。而如果这个类变量是常量,final修饰,则在这个阶段就会初始化为他的值,如private static final int a =1; a就是1

链接.解析:解析是将常量池内的符号引用变成直接引用的过程。符号引用是一个可以找对应内存位置的字面量,直接引用是可以直接定位到内存地址与内存布局相关的引用。

对同一个符号引用进行解析是常见的事情,所以虚拟机会对解析进行缓存。

解析


解析类过程图如上,流程如下

解析字段过程如下,假设获取的字段是类C的字段

如果父类和接口有同名字段,会编译不通过

接口方法解析,类方法解析都类似

初始化

初始化阶段是真正开始执行字节码的阶段

初始化阶段是执行类构造器<clinit>的过程

初始化不用显示的调用父类构造器(构造函数需要),他会保证在子类clinit执行前父类的clinit已经执行完毕,所以第一个加载的类一定是Object

因为父类的clinit限制性,所以子类拿到的值一定是父类静态代码块执行后的值。

如果类没有静态代码块,那么这个类没有clinit方法

接口中不能有静态代码块,但是有clinit方法,执行前不需要先执行父接口的clinit

虚拟机会保证一个类的clinit被正确的加锁同步,如果多个线程去同时初始化一个类那么只会有一个线程去执行,其他都要阻塞等待,如果这个clinit耗时较长,就可能导致多个进程阻塞

使用和卸载

告辞没什么好说的

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消