Which GC (Garbage Collection) strategy do you prefer for your app in new Java?

 Hi awesome community!


During conversation with community members, I see a lot of users used standard Garbage Collector. Also, Java world is provide a lot of interesting new things around GC and deprecated as well. 

Let's see what kind of GC supported by adoptJDK, OpenJDK, Oracle (excluding commercial builds).

  • Serial
  • Parallel
  • Concurent Mark Sweep (CMS)
  • G1
  • Shenandoah
  • ZGC
  • Epsilon (only for measuring)

I will link JEPs as possible, for clear overview.

Also, about Memory management and a good explaining about Serial, Parallel, CMS you can read on oracle site. e.g.


To be a brief, I have uploaded that picture




Hence I will upload a picture how works the 2 first algorithms


Concurent Mark Sweep


From Java 9, it marks as deprecated

You will see the message in your console

Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

As suggestion switch into G1GC or other GC.



Introduced on Java 9 as default, If you use a JDK of lower release, G1 can be enabled with the -XX:+UseG1GC parameter. On last 2018 year, Atlassian set into setenv.sh for most of products key -XX:+UseG1GC.


Also, you can use string deduplication option



Very strict for GC pauses






Introduced on Java 11. 

Low latency.



Epsilon GC

Please, have a look into source for what it can be needed

In my use case, it can be covered to understand the heap size, leaks on test env. Hence I can decrease time for dancing with parameters on production env. 

Maybe that GC actively used by Atlassian developers and vendors developers as well.



I hope most of users will continue use G1 or will upload experiences with working with new algorithms. Also, will switch from CMS. 

Just also, very interesting to see performance results  C4 GC from AzulVM.



Gonchik Tsymzhitov


Popular posts from this blog

Overview and practical use cases with open source tracing tool for Java Apps. Glowroot. Installation

How only 2 parameters of PostgreSQL reduced anomaly of Jira Data Center nodes

Atlassian Community, let's collaborate and provide stats to vendors about our SQL index usage