The multi-phase copying garbage collection was designed to avoid the need for large amount of reserved memory usually required for the copying types of garbage collection algorithms. The collection is performed in multiple phases using the available free memory. The number of phases depends on the size of the reserved memory and the ratio of the garbage and accessible objects.