Java对象模型(OOP-Klass)

介绍

  • Java是一种面向对象的语言,而Java对象在JVM中存储是由一定结构的。而这个 Java对象自身的存储模型称之为Java对象模型
  • HotSpot虚拟机中,设计了一个OOP-Klass Model.OOP指的是普通对象指针,而Klass用来描述对象的具体类型。
  • 如下图所示是一个简单的Java对象的OOP-Klass模型,也就是Java对象模型
    java对象模型图

Java对象创建过程

  • 类加载检查:虚拟机遇到new字节码指令的时候,首先去检查这个指令的参数是够可以在常量池中找到对象的符号引用,并且检查这个符号引用是否已经被加载过、解析、和初始化过,如果没有,则必须先要执行相应的类加载过程
  • 分配内存:在类加载检查完后,接下来虚拟机会为对象分配内存。对象所需的大小在类加载完成后便可确定,为对象分配空间的任务相当于在堆中开辟出一块确定的大小,分配方式有指针碰撞空闲列表两种,具体使用哪种还需要看Java堆的规整程度,是够规整取决于使用的何中垃圾回收算法,如果使用标记压缩则使用指针碰撞,标记清除则使用空闲列表
  • 初始化零值:内存分配完成后,虚拟机要对对象完成必要的设置,例如这个对象是哪个类的实例,如果才能找到类的元数据信息对象的哈希码GC分代年龄等信息都是存放在对象头中的。另外根据虚拟机当前的运行状态不同
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值