java虚拟机(JVM)02 创建对象实例过程

java中使用new 创建一个类的对象实例:
1.首先在方法区中的类信息中查找是否有这个类的信息。

** 2.如果有继续运行,在java堆中找出相应的一块空闲内存。**这里如果java堆的内存结构是整齐的(上部是已经占用的内存,下部是空闲的内存),用一个指针隔开两种内存。这时只需要把指针向下移动相应的大小即可。 如果java堆的内存不是整齐的,(像是链表)这个时候使用一张java堆内存的空闲表来查找合适的内存存放。

3.分配内存完成后,把这段内存化为0
4.虚拟机开始为这片区域配置类的元数据
5.java调用new 后面的init函数(类的构造函数),这个时候完成才算完成程序员想要的对象实例


Hotsopt中的java对象结构:对象头,实体数据,填充字段

对象头 :
1.类指针,用来判断是那个类的实例
2.自身数据指针,这里指向运行时候需要的数据,例 如哈希码,GC分代年龄等

实体数据:
就是代码中定义的各种参数,包括自己的和从父类继承的

填充字段:
Hotspot中对象的大小是8字节的整数倍。所有需要填充。

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值