/GCAlgorithm

GC算法

Primary LanguageC++

GC算法评价标准

吞吐量

吞吐量(throughput)指的是“在单位时间内的处理能力”

也可以理解为垃圾收集的效率。具体来说,吞吐量是指系统总运行时间中,应用程序所耗费的时间与垃圾收集器所耗费的时间的比值

举个例子来说明,假设系统总运行时间为1小时,其中应用程序正常执行的时间为55分钟,而垃圾收集器的运行时间为5分钟。那么系统的吞吐量为55/60,即91.67%

这个吞吐量的百分比可以反映出垃圾收集器的效率,也就是系统在单位时间内的处理能力

如果吞吐量较高,说明垃圾收集器的性能较好,系统能够更多地用于执行应用程序的任务

而如果吞吐量较低,说明垃圾收集器的性能较差,系统大部分时间都在进行垃圾回收,影响了应用程序的执行效率

最大暂停时间

最大暂停时间是指在垃圾回收过程中,最长的一次停顿时间。这是一个重要的性能指标,因为它直接影响着应用程序的响应性能和用户体验。

最大暂停时间的长短取决于多个因素,包括垃圾回收算法的设计、堆大小、应用程序的负载情况等

对于用户敏感的应用程序,较长的最大暂停时间可能会导致卡顿或响应缓慢的问题,因此需要通过优化垃圾回收算法、调整堆大小等方式来降低最大暂停时间,提升应用程序的性能和用户体验。

堆使用效率

堆使用效率是指在垃圾回收过程中,堆内存的利用程度

左右堆使用效率的因素有两个

一个是头的大小,另一个是堆的用法 首先是头的大小。在堆中堆放的信息越多,GC 的效率也就越高,吞吐量也就随之得到改善,但毋庸置疑,头越小越好。因此为了执行 GC,需要把在头中堆放的信息控制在最小限度

根据堆的用法,堆使用效率也会出现巨大的差异。举个例子,GC 复制算法中将堆二等分,每次只使用一半,交替进行,因此总是只能利用堆的一半

GC 标记 - 清除算法和引用计数法就能利用整个堆

访问的局部性

PC 上有 4 种存储器,分别是寄存器、缓存、内存、辅助存储器

众所周知,越是可实现高速存取的存储器容量就越小

毫无疑问,我们都希望尽可能地利用较高速的存储器,但由于高速的存储器容量小,因此通常不可能把所有要利用的数据都 放在寄存器和缓存里

参考资料