java领域模型设计实例_Java-100天知识进阶-对象模型-Klass Word-知识铺

Java对象模型 - Klass Word

一、OOP-Klass

bdb58afb54a7f6eec9db41d6d75bdd45.png

1. Klass Word: 是java对象模型中的头部信息,用来描述java类,和虚拟机中的Java类型结构相对应着。

2. 占用的长度: 32位JVM ,占用为32位, 64位JVM,占用为64位。

3. 内存消耗: 64位JVM的内存占用多了50%, 后期JVM为了节省空间,可以使用参数+UseCompressedOops, 开启指针压缩。这里就成OOP-Klass

4. oop: ordinary object pointer 被压缩后的的指针类型,普通对象指针。

5.被压缩指针: 静态变量指针,对象变量指针,数组元素指针,

二、OOP-Klass体系

2.1 作用:

1.OOP 普通对象指针,指向的是一各实例

2. Klass 实例头部描述信息,具体包含 元数据和方法信息

3. 避免虚函数表头。

2.2 模块:

多模块,每个模块对应一个类型,也代表着JVM内部会创建对应的OOP对象。

2.3 模块分类:

1. 基类 typedef class oopDesc* oop;

2. 实例 typedef class instanceOopDesc* instanceOop;

3. 方法 typedef class methodOopDesc* methodOop;

4. 方法中静态信息 typedef class constMethodOopDesc* constMethodOop;

5.数据结构:typedef class MethodDataOopDesc* methodDataOop;

6. 数组对象 typedef class arrayOopDesc* arrayOop;

7.对象的数组 typedef class objArrayOopDesc* objArrayOop;

8.基本类型的数组 typedef class typeArrayOopDesc* typeArrayOop;

9.常量池 typedef class constantPoolOopDesc* constantPoolOop;

10.常量池缓存 typedef class constantPoolCacheOopDesc* constantPoolCacheOop;

11.Java类对等的C++类 typedef class klassOopDesc* klassOop;

12.对象头 typedef class markOopDesc* markOop;

2.4 Klass体系

Hotspot JVM 设计对象结构, 分为 Klass 和 oop 两个模块。

2.4.1 oop 实例的数据,不包含虚函数。

2.4.2 klass 实现虚函数多态,提供虚函数表。

2.4.3 每一个实例在JVM都创建一个Java类的instanceKlass对象对应着。

2.4.4 oop->klassOop->KlassKlass 对应关系

8d64c7f150389840d84095dcefbbdf42.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值