It is a Mark-and-Sweep GC.
- Stop-the-World: Set write barrier (to know how much was allocated during maark phase)
- Concurrent: Mark all memory which is still in use by the app
- Stop-the-World: Remove write barrier
- Concurrent: Sweep (it actually happens on new allocations)
Video from Bill Kennedy (very basic; great explanation of gc trace):
Video from Uber: