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;
}