程序员日常最喜欢的自我调侃就是,没有对象很简单啊,自己写代码 new 一个不就好了,说到这里,我们的骄傲就已经尽数体现了。
不过话说回来,一个简简单单的 new 背后,JVM 到底为我们做了些什么呢, Java 的对象具体是怎么被创建的呢,一起来看看吧。
比如我们想要创建一个 Person 对象:
Person person = new Person();
在 JVM 中的加载流程如下图所示:
Step1:类加载检查
JVM 虚拟机遇到⼀条 new 指令时,⾸先会检查在常量池中是否可以定位到这个类的符号引⽤(比如 org.simple.Person),并且检查这个符号引⽤代表的类是否已被加载、解析和初始化过。
如果没有,那必须先执⾏相应的类加载过程。
Step2:分配内存
当类加载完成后,就可以确定对象所需的内存大小了。
为对象分配空间的任务实际上就等同