GC
在大对象堆中,GC从不移动大对象,只需在不需要时删除。在不断删除存储的过程中,大对象堆中逐步存在内存漏洞,这就是所谓的内存碎片化。
虽然GC不对大对象堆进行压缩,但是会将其中的相邻空闲块连在一起,这样会创造一个更大的空闲块,并将其作为优化策略添加到空闲列表中。
需要注意的是,GC仅在第2代中从大对象堆中收集未使用的对象。换句话说,在从大对象堆中回收内存之前,GC会先回收驻留在小对象堆中的内存。因此,大对象堆不仅受到内存碎片的影响,而且具有存活时间更长、在不被使用情况下也占用空间的特性。
在这个过程中,压缩对象的成本与大小成正比,而且这个成本不低,还会降低性能,所以大对象就被存储在一个单独的堆中。

浙公网安备 33010602011771号