Some collections of objects in the old generation are done concurrently and some are done using stop-the-world pauses. The steps include:
- Initial marking of survivor regions (root regions) that may have references to objects in the old generation, done using stop-the-world pause
- Scanning of survivor regions for references into the old generation, done concurrently, while the application continues to run
- Concurrent marking of live objects over the entire heap, done concurrently, while the application continues to run
- Remark – completes the marking of live objects, done using stop-the-world pause
- Cleanup – calculates the age of live objects and frees regions (using stop-the-world) and returns them to the ...