Which GC (Garbage Collection) strategy do you prefer for your app in new Java?
- Other Apps
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).
- Concurent Mark Sweep (CMS)
- 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
Very strict for GC pauses
Introduced on Java 11.
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.