JEP 291: Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector

Roman Kennke rkennke at
Wed Apr 5 07:45:13 UTC 2017

Am 05.04.2017 um 07:49 schrieb Christoph Engelbert:
> Hey guys,
> Regarding the proposal for JEP 291 to remove the CMS GC. I understand that the CMS code is extremely hard to maintain and spread all over the JVM (tried to understand myself once and gave up ;-)) but looking at it from my own experience, as well as our customer base, CMS+ParNew is the most commonly deployed solution and a lot of applications are optimized to the behavior of CMS.
> Even with G1 coming as the default GC in Java 9 I don’t see a lot of people moving for existing applications (that already use explicit command line GC settings). Apart from the completely different behavior of G1 over CMS. In general I think Krik or Martijn can give a deeper insight into the deployment base of the different GCs.
> Anyhow I’m ok with a warning message as it won’t hurt application runtime but I think it is too early to announce removal and, as mentioned above, I don’t expect people to move away from it as their application system is too closely bound to CMS and includes weeks of work on application and GC optimizations.
> From my point of view there are other GCs that could go first but as said, I understand where the wish to remove CMS comes from. What would be the prospected timeline to remove it? Java 10?

There's also the JEP: "GC Interface: Better isolation of GC
implementations" (it's submitted, but not a candidate yet, thus has no
number). One of the motivations for the GC interface JEP was exactly the
CMS deprecation issue: it will provide much better isolation of CMS (and
the other collectors) and thus remove one of the big obstacles for
maintaining the code. If all goes as planned, all CMS code will reside
under one directory (in contrast to being spread all over the place),
and possibly even built optionally (if anybody needs this). All it takes
from there is somebody who steps in and takes responsibility for
maintaining CMS.

I'd say it's too early to talk about removing CMS. And, to be honest, I
even question the move to deprecate it. What's going to happen if
somebody actually takes over CMS maintainership? Un-deprecate it?

The GC interface JEP is ready, I've already got a good prototype that
covers a lot of the pressing issues (with CMS and isolation in general).
Maybe move it to candidate, and possibly propose to target JDK10?

Also, I am not sure when to start proposing actual code related to GC
interface to JDK10? Right now? After JDK9 is GA'd? When the JEP is
proposed to target, or even targetted?


More information about the jdk9-dev mailing list