当前位置:网站首页>JVM内存模型:类加载过程
JVM内存模型:类加载过程
2022-07-22 03:39:00 【暮色_年华】
类加载子系统负责加载Class文件,class文件在开头有特定的文件标识。
ClassLoader只负责class文件的加载,至于是否可以运行,由Execution Engine决定。
加载的类信息存放在方法区。
ClassLoader的角色
相当于一个快递员的角色,把class文件加载到JVM方法区中。
类的加载过程:
加载:
1、通过类的全限定名获取定义此类的二进制字节流
2、将这个字节流代表的静态存储结构转化为方法区运行时数据结构
3、在内存中生成一个代表这个类的Class对象,作为方法区各种数据访问入口
链接:
验证:
目的在于确保Class文件的字节流中包含信息符合当前虚拟机要求,保证被加载类的正确。
主要包括四种验证:文件格式验证,元数据验证,字节码验证,符号引用验证。
准备:
*为类变量(static)分配内存并且设置该类变量的默认初始值,即零值。
*准备阶段不包含用final修饰的static,因为final在编译的时候就会分配了,准备阶段会显式初始化。
*准备阶段不会为实例变量分配初始化,类变量会分配在方法区中,实例变量随着对象一起分配到了java堆中。
解析:
*将常量池内的符号引用转换为直接引用的过程。
*解析操作往往会伴随着JVM在执行玩初始化之后再执行。
*符号引用就是一组符号来描述引用的目标。直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。
*解析动作主要针对类或接口,字段,类方法,接口方法,方法类型等。
*对应常量池中的constant_Class_info,constant_Fieldref_info,constant_Methodref_info等。
初始化:
*初始化阶段就是执行类构造器方法<clinit>()的过程。此方法不需要定义,是javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并而来。
*构造器方法中指令按语句在源文件中出现的顺序执行。
*<clinit>()不同与类的构造器。
*若类具有父类,JVM会保证子类的<clinit>()执行前,父类的<clinit>()已经执行完毕。
*虚拟机必须保证一个类的<clinit>()方法在多线程下被同步加锁。
边栏推荐
- JD-H5开发
- Px4 module design Xi: built in framework
- "Demand optimization" uses PostMessage to solve the cross domain problem of localstorage
- 白蛋白索拉非尼/Gd2O3/CuS复合白蛋白纳米粒/ALB-ICG-DOX白蛋白纳米粒包ICG&DOX的制备
- 【js】作用域和作用域链
- SCM peripheral devices learning strategies, small Bai must see
- EasyCVR平台如何实现无需鉴权即可接入特殊设备?
- Collagen protease loaded albumin composite nanoparticles / bovine serum albumin coated ceria nano artificial enzyme
- 载胶原蛋白酶的白蛋白复合纳米颗粒/牛血清白蛋白包裹二氧化铈纳米人工酶
- Jd-h5 development
猜你喜欢
『需求优化』使用 postMessage 解决 localStorage 跨域问题
JVM内存模型:虚拟机栈
包裹DNA和光敏剂Ce6的白蛋白纳米粒/棉酚白蛋白纳米粒/拉帕替尼白蛋白纳米粒
2022 those "hidden rules" in the interview of testers, don't step on the pit
命令行程序测试自动化
白蛋白索拉非尼/Gd2O3/CuS复合白蛋白纳米粒/ALB-ICG-DOX白蛋白纳米粒包ICG&DOX的制备
m利用SIMILINK仿真模块实现多径信道的动态仿真模拟
元宇宙赋能场景金融:商业银行竞争发展新赛道
【代码笔记】—U-Net
GoldenSection
随机推荐
Glide 源码解析
触发器基础知识(中)
【js】作用域和作用域链
多米诺骨牌上演:三箭资本崩盘始末
下班前几分钟,Express 快速入门
ST表(跳跃表)
Word: insert vector diagram with specified color
St table (jump table)
关于近期网上的低浓度阿托品治疗近视问题
MySQL advanced addition, deletion, modification and query operations, including detailed explanation and operation of various queries and table design explanation
Segment tree learning record
Swinir: image restoration using swing transformer paper reading
常见的probe set和gallery set究竟是什么
[learn rust together] rust preparation before learning -- Annotation and formatted output
科普 | 如何创建一个DAO?
什么是单片机?单片机的组成部分有哪些?
"Demand optimization" uses PostMessage to solve the cross domain problem of localstorage
LastWordLen
Matlab simulation of BER performance of rs+bch concatenated coding and decoding
DOM之12种节点