1. An incremental, concurrent collecting process comprising the steps of: defining at least one memory page containing objects, creating a map with at least one map entry per memory page, write protecting the at least one memory page next to be collected to obtain at least one protected memory page, relocating reachable objects found in the at least one memory page, in response to a write to the protected memory page occurring in an application, setting a corresponding map entry, and unprotecting the at least one protected memory page and making changes corresponding to the write, then suspending the application, scanning the map, and propagating the changes to the relocated objects.