常用的评价GC算法的标准
July 23, 2022
常用的评价GC算法的标准
#
- 分配的效率主要考察在创建对象时,申请空闲内存的效率;
- 回收的效率它是指回收垃圾时的效率;
- 是否产生内存碎片碎片是指活跃对象之间存在空闲内存,但这一部分内存又不能被有效利用。比如内存里有两块不连续的 16 字节空闲空间,此时分配器要申请一块 32
字节的空间,虽然总的空闲空间也是 32 字节,但由于它们不连续,不能满足分配器的这次申请。这就是碎片空间;
- 空间利用率这里主要是衡量堆空间是否能被有效利用。比如基于复制的算法无论何时都会保持一部分内存是空闲的,那么它的空间利用率就无法达到 100%,这是由算法本身决定的;
- 是否停顿
Collector 在整理内存的时候会存在搬移对象的情况,因为修改指针是一种非常敏感的操作,有时候它会要求 Mutator 停止工作。是否需要 Mutator
停顿,以及停顿时长是多少,是否会影响业务的正常响应等。停顿时长在某些情况下是一个关键性指标;
- 实现的复杂度有些算法虽然看上去很美妙,但因为其实现起来太复杂,代码难以维护,所以无法真正地商用落地。这也会影响到 GC 算法的选择。
Viewpoint
#
From
#
19 | 垃圾回收:如何避免内存泄露?
Links
#