常用的评价GC算法的标准

常用的评价GC算法的标准

常用的评价GC算法的标准 #

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

Viewpoint #

From #

19 | 垃圾回收:如何避免内存泄露?