栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

JVM之类加载

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM之类加载

类文件结构

类型        名称                            数量                描述
———————————————————————————————————————————
u4        魔数    (magic)                1                标识这个文件是否是一个能被虚拟机接受的Class文件
u2        次版本号(minor_version)        1
u2        主版本号(major_version)        1
u2        常量池容量计数值(constant_pool_count)1        
cp_info    常量池(constant_pool)  constant_pool_count-1    存放字面量和符号引用
u2        访问标志(access_flags)        1                标识类或接口的访问信息(类还是接口、是否public、是否abstract、final等)
u2        类索引(this_class)            1                确定类的全限定名————|
u2        父类索引(super_class)        1                确定父类的全限定名——|————确定类的继承关系
u2        接口索引计数(interfaces_count)1———————————————————————————————|
u2        接口索引集合(interface)     interfaces_count 接口索引集合    ——————|        
u2        字段表集合计数(fields_count)    1
field_info 字段表集合(fields)     fields_count        描述类或接口中声明的变量
u2        方法表计数(methods_count)    1
method_info 方法表集合(method) methods_count        描述类中的方法
u2        属性表计数(attributes_count)1
attribute_info 属性表集合(attributes)attributes_count    code、ConstantValue等

类加载的过程
加载:根据类的全限定名读取类的二进制字节流转化为方法区的类型结构,并在java堆中创建该类的Class对象作为方法区类型结构的访问入口
校验:校验类型结构是否符合Java虚拟机规范,例如,校验Class文件结构,运行该类是否会危害虚拟机自身安全(校验Code属性)
准备:给类变量分配内存并赋初始值
解析:将常量池的符号引用转化为直接引用
初始化:执行类构造器的()方法

怎样确保类的唯一性?
类的唯一性是由类和类加载器共同确定
三层类加载器:
启动类加载器:加载lib下的类
扩展类加载器:加载libext下的类
应用类加载器:加载ClassPath下的类
自定义类加载器

双亲委派模型
类加载器会先委派父类进行类加载,如果父类无法加载再由子类进行加载,该模型下任何一个类加载请求都应该传送到启动类加载器,保证了类的优先级层次,确保了类的唯一性

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/612614.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号