MST
星途 面试题库

面试题:HBase垃圾回收优化之常见策略

在HBase垃圾回收优化中,常见的垃圾回收策略有哪些?请简要说明每种策略的原理及适用场景。
23.1万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试

1. CMS(Concurrent Mark Sweep)回收器

  • 原理:采用“标记-清除”算法,在应用程序运行过程中,并发地进行垃圾回收。它首先暂停应用程序(初始标记阶段),标记出与GC Roots直接相连的对象;接着并发标记阶段,与应用程序同时运行,标记出所有可达对象;再暂停应用程序(重新标记阶段),修正并发标记期间因程序运行导致的标记变动;最后并发清除阶段,在应用程序运行时,清除标记为垃圾的对象。
  • 适用场景:适用于对响应时间要求较高的应用场景,例如在线交易系统等,因为它能尽量减少垃圾回收过程中应用程序的停顿时间。

2. G1(Garbage-First)回收器

  • 原理:将堆内存划分为多个大小相等的Region,在回收时,优先回收垃圾最多的Region(这也是“Garbage-First”名称的由来)。它首先初始标记,暂停应用程序,标记出与GC Roots直接相连的对象;然后并发标记,与应用程序并发运行,标记出所有可达对象;再混合回收,根据垃圾占比,选择部分Region进行回收,在回收过程中采用复制算法,避免内存碎片。
  • 适用场景:适用于堆内存较大,追求高吞吐量和低停顿时间的场景,对于HBase这样的大数据存储系统,当数据量较大且对响应时间有一定要求时比较适用。

3. Serial回收器

  • 原理:采用“标记-复制”或“标记-整理”算法,在垃圾回收时,会暂停所有应用线程,单线程进行垃圾回收工作。它先标记出所有存活对象,然后将存活对象复制到另一块内存区域(标记-复制),或者在原内存区域整理存活对象(标记-整理),清除垃圾对象。
  • 适用场景:适用于小内存应用场景,由于是单线程回收,在堆内存较小的情况下,简单高效,例如一些嵌入式设备上的Java应用。

4. Parallel回收器

  • 原理:与Serial回收器类似,但采用多线程进行垃圾回收,在垃圾回收时同样会暂停应用程序。采用“标记-复制”或“标记-整理”算法,多个线程并行标记和处理存活对象,提高回收效率。
  • 适用场景:适用于对吞吐量要求较高的应用场景,例如批处理任务等,能在较短时间内完成垃圾回收,使应用程序有更多时间处理业务逻辑。