It is legal Java practice to initiate a Full GC by calling System.gc(). In old days when memory was limited and heap sizes of Java apps were rather small this was common practice which did not cause harm because full GC runs only took a short time to execute.
With ever larger Java server applications with many threads and heap sizes in the GB range such calls can easily bring a JVM to a virtual halt. Frequently System.gc() calls are introduced by third party libraries or products and the application developers are not aware of them. In these cases, the problem can cause serious performance degradation and project desperation.
The problem can be easily fixed by the -XX:+DisableExplicitGC JVM switch. As most developers don't know this, it would be very useful to apply this switch by default. On the other hand, this should cause no problems to applications which have been making use of System.gc() calls so far. Strictly speaking these calls serve no obvious purpose.