A memory manager comprises a memory allocator and a garbage collector. The memory
allocator is configured to allocate memory for objects within a heap on behalf
of a process, generate a heap map comprising a plurality of heap map entries, wherein
each heap map entry of the plurality of heap map entries includes an address of
an object allocated within the heap, and provide the heap map to the garbage collector.
The garbage collector is configured to generate a mark list identifying one or
more objects within the heap using the heap map, wherein the addresses of the one
or more objects correspond to data values specified within an address space of
the process, and to free a given object previously allocated in the heap if the
mark list indicates that an address of the given object does not correspond to
a data value specified within the address space.