Performance tuning and garbage collection are key elements of JVM application behavior. A large number of modes and strategies exist, and they all involve trade-offs, balancing the need for throughput, space, responsiveness and available memory on a range of scales.
What these strategies have in common is the need for extended application pauses as a result of the requirement to compact the heap to free up space - one of their main drawbacks.
A number of strategies are used to delay these events, but ultimately compaction is impossible to avoid with all commercially available collectors, with the exception of one: Azul's C4 is able to completely avoid pauses.
Reliability, scalability and application performance can improve by a large margin once Java developers have a more complete grasp of the specifics of performance tuning, and can make more informed decisions about available options.
For more information about performance tuning and garbage collection, download this white paper.