垃圾收集:
HotSpot 支持多种不同的垃圾收集算法,比如复制算法、标记-清除、标记-压缩,这些算法旨在满足不同的暂停时间和吞吐量要求。程序员根据自身的程序选择合适的垃圾收集算法。
HotSpot垃圾收集器是一个完全准确的收集器,相比之下,有些垃圾收集器是保守的或部分准确的。尽管保守的垃圾收集很有吸引力,因为它很容易添加到没有垃圾收集支持的系统中,但它具有某些缺点。
通常,保守的垃圾回收器容易发生内存泄漏,它禁止对象迁移并可能导致堆碎片。保守的收集器无法确定所有对象引用的位置。保守的收集器必须使用句柄间接引用对象(从而降低性能)或避免重新定位对象。
HotSpot收集器是完全准确的,所以它可以提供一些有力的设计保证,而保守的收集器则无法做到:
-
可以可靠地回收所有无法访问的对象存储器。
-
所有对象都可以重定位,从而实现对象内存压缩,从而消除了对象内存碎片,并增加了内存局部性。
准确的垃圾回收机制可避免意外的内存泄漏,支持对象迁移并提供完整的堆压缩。Hotspot中的GC机制可以很好地扩展到非常大的堆。
分代gc
HotSpot VM使用了最新的分代收集器,它提供了两个主要好处:
1、与非分代收集器相比,大多数程序的分配速度和整体垃圾收集效率提高了。gc时,只需要扫描堆的一部分,不需要扫描整个堆。
2、用户可感知的垃圾收集暂停的频率和持续时间相应减少