在持续对JVM进行深入学习的过程中,发现一个对象创建的过程与当时初学java时的概念完全不同了,希望记录一下自己此时的所得 1.首先创建对象时,会先看对象相应的类是否已经加载,初始化过了,如果是第一次使用该类,则会先加载类。 2.然后会给类分配内存空间,根据GC回收策略(主要看回收过后内存是否连续),进行连续内存分配或者根据内存空间的空闲列表进行内存分配,若对象起始内存地址不为8字节倍数的会补齐做对齐填充。(PS:如果是句柄引用的堆栈对象对应方式,还会在堆中的句柄池中创建相应指向对象的指针) 3.将对象的各字段初始值赋为零值。 4.设置对象头信息,包括GC分代信息、锁相关信息、非句柄引用下的指向相应Class的指针等。 5.为各字段进行预定义的赋值。