Generational Concurrent Mark-Compact GC explained