java对象创建流程
在步骤四中,内存分配,其中堆内存分配分为两种:空闲列表,指针碰撞。
关于具体使用哪种分配方式取决于
(1).java堆是否规整,而java堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定。
(2).指针碰撞在并发情况下是非线程安全的。(两种解决方案)、
内存分配完成以后虚拟机需要将分配的内存空间都初始化为零值。
上述步骤执行完之后,虚拟机还要对对象进行必要的设置,如这个对象是哪个类的实例,如何才能找到类的元数据信息,对象的哈希码,对象的GC分代年龄等信息。这些信息存放在对象头中。
对于虚拟机来说对象已经创建好了,但是对于程序员来说才刚刚开始。
下章------------------------对象内存布局