GC roots • Concurrent mark - mark all live objects in old gen • Concurrent preclean - mark dirty live objects • Concurrent abortable preclean - continuation of above • Final remark (STW) - finalize marking of live objects • Concurrent sweep - reclaiming space concurrently • Concurrent reset - reset internal data structures