With Java, a critical component of application behavior is performance tuning. There exist many modes and techniques, and they all involve trade-offs that try to balance requirements for throughput, space, responsiveness and available memory across a variety of scales.
What most of these options have in common is the need for extended pauses in the application, resulting from the requirement to compact the heap to free up space. This is one of their main drawbacks. Compaction can be delayed for a while, using a number of different strategies, but with all commercially available collectors it cannot be avoided indefinitely - with one exception: Azul's C4 is able to avoid pauses altogether.
Application performance, scalability and reliability can be improved by Java developers once they have direct access to performance tuning options and thereby develop an in-depth understanding of the garbage collection process.
For more information about performance tuning and garbage collection options, download this white paper.