JVM performance tuning typically involves delaying compaction. As most objects have a short time span, garbage collection can be performed on younger objects for a while, but the time comes when old dead objects will need to be reclaimed.
Complete garbage collection can be put on hold some more by keeping track of the removal of old objects and making use of the freed memory. But after a while also this space will become fragmented and will have to be reclaimed. Tuning can avoid garbage collection for a while, but it cannot be delayed forever.
Almost all garbage collection systems have to halt application processing at some point to find out which objects are still being used. These can then be collected, and the heap can be defragmented and compacted. The larger the heap, the longer the pause times, leading to noticeable delays for users and poor application performance.
Garbage collection and the requirement for GC tuning can be completely eliminated however - learn how by downloading this white paper.