multithreaded GC

now we can do garbage collector things on background without having to
interrupt the main thread