CMS GC is not always the best choice. Distributed processing applications and "batch" applications, that don't need responsiveness, but rather need to crunch several gigs of data as fast as possible, will likely do better with -XX:+ UseParallelOldGC