Any kind of copying collector enables faster object allocation by defragmenting the heap. This kind of allocator is sometimes called a bump allocator, because it just increments (bumps) a pointer.
void *malloc(int n) {
if (heapTop − heapStart < n)
doGarbageCollection();
void *wasStart = heapStart;
heapStart += n;
return wasStart;
}