Hello,
We (my company) have been using YoungGC=Parallel; Old=CMS/Incremental since Java 1.5 for a Java caching application running in a 64 GB heap (yes, even in HotSpot 1.5).
At various times, we have tested the G1 collector. The performance for our caching application has not met expectations with G1GC. Always looking for ways to improve the system, we are certainly open to new technologies. However, the loss of the CMS collector will mean our application won’t be able to adopt newer versions of Java.
Basic JVM options for GC:
-XX:+UnlockExperimentalVMOptions
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:-CMSIncrementalPacing
-XX:CMSIncrementalDutyCycleMin=100
-XX:CMSIncrementalDutyCycleMin=95
-XX:+ExplicitGCInvokesConcurrent
-XX:ConcGCThreads=6
With these options, on servers with 64GB heap used at 60% and thousands of QPS, we see Young GC pauses in the range of 50-100 ms every roughly 10 seconds (for .5-1% of the time) and about the same for the short GC pauses of the background CMS. We NEVER see a long CMS pause and the servers run for months at a time, being taken down pretty much only to patch the OS. With a new generation of the hardware, improved software and taking advantage of the ConcGCThreads option, we are just beginning a series of tests to determine how high we can crank-up the memory to reduce the farm size.This project is expected to go OpenSource later this year. Without the CMS collector, very large heaps will become very difficult (or impossible) to manage.
Before removing the CMS collector, and I understand it is causing grief to still have it in the Java code base, please ensure there is an adequate replacement (G1 is currently not it).
Thank you for your attention,
Pierre