Closed Sarkie closed 7 months ago
I'm guessing these are listed in the "CommandLine flags:" in the gc log header, right?
That is definitely a list of "effective" options (ones that are explicitly set and ones set by the JVM with ergonomics).
I have never seen those set with ergonomics, so I have always assumed those were options that were always related to something explicitly set, but now that appears to not always true.
Can you attach the beginning of the gc logging so I can see the JDK version and the complete "CommandLine flags"?
Also, can you attach ps output so I can see the list of explicit options? $ ps aux | grep <pid>
I have updated the analysis to consider the use case where these are set with ergonomics:
info.ci.compiler.count=The number of compiler threads is set with -XX:CICompilerCount=N. If this is explicitly set (not computed by JVM ergonomics), and there are not multiple JVMs and/or processes competing for resources, it's generally best to remove this option and let JVM determine an appropriate setting (JDK8) or manage it dynamically with ergonomics (JDK11+).
info.min.heap.delta.bytes=The minimum amount to resize the heap space is set with -XX:MinHeapDeltaBytes=N. If this is explicitly set (not computed by JVM ergonomics), and there is not a good use case, remove it and let JVM ergonomics set it.
The number of compiler threads is set with -XX:CICompilerCount=N. Unless multiple JVMs and/or processes are collocated and competing for resources, it's generally best to remove this option and let JVM determine an appropriate setting (JDK8) or manage it dynamically with ergonomics (JDK11+). The minimum amount to resize the heap space is set with -XX:MinHeapDeltaBytes=N. If there is not a good use case, remove it and let JVM ergonomics decide.
These aren't set by us on the JVM args, these are generated by the JVM but are in the GC log so exactly what the tool is suggesting.