内存划分指针碰撞空闲列表内存分配并发问题分配流程初始化(零值化)设置对象头执行init方法 内存划分 指针碰撞场景:内存规整原理:在用过与没使用过的内存分界线,有一个分界指针,需要内存时向没用过的方向移动大小GC:Serial、ParNew 空闲列表场景:内存不规整原理:虚拟机维护一个列表,记录哪些内存块可以使用,分配后更新列表GC:CMS 内存分配并发问题两种方式 CAS失败重试TLAB本地线程缓存,每个线程在堆中有一块独立的内存,尝试在TLAB分配,用完再使用CAS 分配流程如图注:如果对象不会逃逸出方法,则会有现在栈上分配 初始化(零值化)类似于类加载的准备阶段 设置对象头 类信息元数据信息GC分代年龄偏向锁等等 执行init方法即调用构造函数