1. A method, comprising: executing, with one or more processors, a plurality of threads; determining, with the one or more processors, whether one of the plurality of threads has terminated; if one of the plurality of threads has terminated, removing, with the one or more processors, from a memory associated with the terminated thread, objects no longer in use by any of the plurality of threads, while continuing execution of other threads in the plurality of threads; walking a heap, the heap including a plurality of spans, where each of the plurality of threads owns one or more of the plurality of spans, each span including a plurality of objects used by its associated thread; marking reachable objects in the heap; generating a mark bitmap identifying the reachable objects in the heap; and sweeping the mark bitmap without clearing mark bits.