A method for memory management in execution of a program by a computer having
a
memory includes allocating respective portions of the memory to data objects using
mutator threads of the program, whereby the objects are held in a heap created
by the program. The data objects in the heap are traced so as to mark the data
objects that are reachable at a given stage in the program. The computer loops
over the mutator threads so as to verify for each of the mutator threads that every
update to the allocated portions of the memory in progress by the mutator thread
has been completed. The heap is then swept so as to free the memory that is allocated
to the data objects that are not marked as reachable, for reallocation to new data objects.