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

161 阅读1分钟

本文首发于个人博客,欢迎来访

前言

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

对象创建流程图

名词解释

内存规整

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

内存不规整

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

初始化零值

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

进行必要的对象设置

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

JVM流程结束之后

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