Java堆是被所有线程共享的一块内存区域,主要用于存放对象实例,在堆上为对象分配内存就是把一块大小确定的内存从堆内存中划分出来,将对象放进去。常用的分配方法有指针碰撞和空闲列表两种实现方式。
一、指针碰撞
适用于堆内存完整的情况,已分配的内存和空闲内存分表在不同的一侧,通过一个指针指向分界点,当需要分配内存时,把指针往空闲的一端移动与对象大小相等的距离即可,用于Serial和ParNew等不会产生内存碎片的垃圾收集器。
二、空闲列表
来源:https://blog.csdn.net/luxiaoruo/article/details/106637412