Below is what i read & understand about the Concurrent Mark and sweep algo
1) In the initial marking, the GC root objects are marked as alive. During this phase, all threads of the application are suspended.
2) During concurrent marking, the marked root objects are traversed and all reachable objects are marked. This phase is fully concurrent with application execution, so all application threads are active and can even allocate new objects. For this reason there might be another phase that marks objects that have been allocated during the concurrent marking. This is sometimes referred to as pre-cleaning and is still done concurrent to the application execution.
3) In the final marking, all threads are suspended and all remaining newly allocated objects are marked as alive.
Question: Since there is a final marking phase in this algorithm, during which application threads get's suspended so how does this algorithm is faster in comparison to the parallel GC ?