类加载流程003

上篇文章讲解了klassKlass的创建过程,本文将Universe::genesis(TRAPS)方法中创建的klass已图的方式进行展示.注意,其创建的方式是一致的,不同的地方是大小不同等.以下先列举一下在该方法中创建的klass.

klass名作用
klassKlassklass链路的末端
arrayKlassKlass是所有数组类类的抽象基类
objArrayKlassKlass是所有objArrayKlass所对应的klass
instanceKlassKlass是instanceKlass所对应的klass
typeArrayKlassKlass是typeArrayKlass所对应的klass
symbolKlass是symbolOop所对应的klass
typeArrayKlass创建了BOOLEAN,CHAR,Float,DOUBLE,BYTE,SHORT,INT,LONG所对应的数组klass
methodKlass描述java类的方法
constMethodKlass描述java类方法所对应的字节码指令信息的固有属性
methodDataKlass是methodDataOop所对应的klass
constantPoolKlass描述java字节码文件中的常量池的数据结构
constantPoolCacheKlass constantPool 缓存所对应的klass
compiledICHolderKlasscompiledICHolderOop 所对应的klass

解析

arrayKlassKlass

在这里插入图片描述

objArrayKlassKlass

objArrayKlassKlass

instanceKlassKlass

instanceKlassKlass

typeArrayKlassKlass

typeArrayKlassKlass

symbolKlass

symbolKlass

typeArrayKlass

typeArrayKlass

methodKlass

methodKlass

constMethodKlass

constMethodKlass

methodDataKlass

methodDataKlass

constantPoolKlass

constantPoolKlass

constantPoolCacheKlass

constantPoolCacheKlass

compiledICHolderKlass

compiledICHolderKlass

总结

可以发现,***Klass在创建的时候总是会申请oopDesc::header_size() + sizeof(***Klass)/HeapWordSize 大小的内存空间.并将_metadata 指向klassKlass.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值