一张图秒懂JVM中的对象创建过程

前言

在我们平时书写Java程序时,新建一个对象直接使用new关键字就可以了,但是你知道当你写下new这3个简单的字母时,Java虚拟机默默做了哪些工作吗?
看完下面这张图你就懂了~

对象创建流程图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1jYtX4Qa-1608297012422)(https://gitee.com/eziozhao/image/raw/master/Img/对象创建.svg)]

名词解释

内存规整

如果所有用过的内存放一边,空闲的放一边,中间一个指针作为分界点的指示器,那么分配内存时只需把指针向空闲区那边移动即可,这就是指针碰撞的分配方式。

内存不规整

已使用的内存和空闲内存交错,那么虚拟机就要维护一个列表,记录可用的内存块。分配时从列表中找到足够大的一块空间,然后更新列表记录,这就是空闲列表的方式。

初始化零值

使得对象的实例字段可以不赋初始值就能使用。

进行必要的对象设置

比如,这个对象是哪个类的实例,如何找到类的元数据信息、对象哈希码、对象GC(垃圾回收)分代年龄等信息。

JVM流程结束之后

这时Java程序才开始执行类的init方法,按照用户的意愿初始化。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值