The major problem for large Java applications is G... (wait for it...) C pauses. Large heaps storing lots of live data, the failure to adhere to generational hypothesis, fragmentation due to old objects coming and going, exacerbate the issues even more. Industrial GCs managed to solve the first large part of the puzzle, concurrent marking — the ability to estimate the object reachability graph without stopping the application for a long time. Shenandoah is the new ultra-low-pause collector that tries to solve the second large part of the puzzle — the ability to move the objects without stopping the application, cutting the GC pauses even more. This talk is about the design choices, internals, performance benefits and tradeoffs that Shenandoah brings to the ecosystem.