Java Parameters Matrix Table

JVM Parameters Enable? References / Details
-XX:+UseG1GC Enabled by default in Java 8u191+ Most important defaults specific to G1 and their default values.
https://dzone.com/articles/choosing-the-right-gc
https://wiki.openjdk.java.net/display/HotSpot/G1GC+Feedback
Alternative: Shenandoah GC
-XX:+UseShenandoahGC Alternative to G1GC. Shenandoah Garbage Collector: experimental in Java 8, newer than G1GC, available in some OpenJDK 8 and newer releases.
https://wiki.openjdk.java.net/display/shenandoah/Main
https://dzone.com/articles/7-jvm-arguments-of-highly-effective-applications-1
-XX:+UseZGC Yes (JDK 11+) Z GC : Better Garbage Collector Algorithm than G1 or Shenandoah. JDK 11+ required.
The Z Garbage Collector, also known as ZGC, is a scalable low latency garbage collector designed to meet the following goals:
路 Pause times do not exceed 10ms (*)
路 Pause times do not increase with the heap or live-set size
路 Handle heaps ranging from a 8MB to 16TB in size
At a glance, ZGC is:
路 Concurrent
路 Region-based
路 Compacting
路 NUMA-aware
路 Using colored pointers
路 Using load barriers
At its core, ZGC is a concurrent garbage collector, meaning all heavy lifting work is done while Java threads continue to execute. This greatly limits the impact garbage collection will have on your application’s response time.
7 JVM Arguments of Highly Effective Applications
https://wiki.openjdk.java.net/display/zgc/Main
-XshowSettings:vm Yes This is a priceless feature to display all the settings of the JVM, together with -XX:+PrintCommandLineFlags it can show a world of hidden stuff.
http://www.javamonamour.org/2018/11/java-showsettings.html
-XX:+UseStringDeduplication Yes https://www.baeldung.com/jvm-garbage-collectors
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath
Yes When running a JVM in a docker container it is probably wise to use the HeapDumpOnOutOfMemoryError option so if you ever run out of memmory the jvm will write a dump of the heap to disk.
https://merikan.com/2019/04/jvm-in-a-container/
https://dzone.com/articles/7-jvm-arguments-of-highly-effective-applications-1
-Xss Test Increase the thread鈥檚 stack size limit by passing the -Xss argument.
https://dzone.com/articles/7-jvm-arguments-of-highly-effective-applications-1
Each application will have tens, hundreds, thousands of threads. Each thread will have its own stack. Each one of them consumes memory.
If their consumption goes beyond a certain limit, then a StackOverflowError is thrown. More details about StackOverflowError and solutions to resolve it can be found in this article.
Linux 64-bit JVM Default thread stack size = 1024k
-Xss2m : This will set the thread’s stack size to 2mb
-Dsun.net.client.defaultConnectTimeout
-Dsun.net.client.defaultReadTimeout
Yes https://dzone.com/articles/7-jvm-arguments-of-highly-effective-applications-1
-Duser.timeZone Yes https://dzone.com/articles/7-jvm-arguments-of-highly-effective-applications-1
Enable GC Logging Check JDK 8: -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:{file-path}
JDK9+: -Xlog:gc*:file={file-path}
https://dzone.com/articles/7-jvm-arguments-of-highly-effective-applications-1
======================================= ============== ================================================================================