-
Type:
Suggestion
-
Resolution: Fixed
-
Component/s: Environment - Java
As a Jira admin, I want to have an easier way to set the flag -XX:UseG1GC when using Java 11
Problem Definition
Java 11 no longer supports some GC parameters that were supported in Java 8, such as:
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCCause -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M -Xloggc:<PATH_TO_GC_LOGS>
Because of that, we now have the script JIRA_INSTALL/bin/set-gc-params.sh to detect the currently used Java version and apply the correct flags. However, when using Java 11 we set -XX:+UseParallelGC by default:
#!/bin/sh
GC_JVM_PARAMETERS=""
if [ $java_version -ge 9 ]
then
# In Java 9, GC logging has been re-implemented using the Unified GC logging framework.
# See http://openjdk.java.net/jeps/158 or https://docs.oracle.com/javase/10/jrockit-hotspot/logging.htm
GC_JVM_PARAMETERS="-Xlog:gc*:file=$LOGBASEABS/logs/atlassian-jira-gc-%t.log:time,uptime:filecount=5,filesize=20M ${GC_JVM_PARAMETERS}"
GC_JVM_PARAMETERS="-XX:+UseParallelGC ${GC_JVM_PARAMETERS}"
else
# Set the JVM arguments used to start JIRA. For a description of the options, see
# http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
#-----------------------------------------------------------------------------------
# This allows us to actually debug GC related issues by correlating timestamps
# with other parts of the application logs.
#-----------------------------------------------------------------------------------
GC_JVM_PARAMETERS="-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCCause ${GC_JVM_PARAMETERS}"
GC_JVM_PARAMETERS="-Xloggc:$LOGBASEABS/logs/atlassian-jira-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M ${GC_JVM_PARAMETERS}"
fi
CATALINA_OPTS="${GC_JVM_PARAMETERS} ${CATALINA_OPTS}"
export CATALINA_OPTS
If -XX:+UseG1GC is set, the JVM will fail to start with the following error:
Error occurred during initialization of VM Multiple garbage collectors selected
Suggested Solutions
- Check if another garbage collector has been specified, and don't set -XX:+UseParallelGC in this case.
- No longer set -XX:+UseParallelGC by default.
Workaround
- Manually remove the flag -XX:+UseParallelGC from JIRA_INSTALL/bin/set-gc-params.sh.
- Follow the steps in the KB article Setting properties and options on startup to add the following Java flag to JVM_SUPPORT_RECOMMENDED_ARGS in the file JIRA_INSTALL/bin/setenv.sh:
-XX:+UseG1GC
- relates to
-
JRASERVER-70558 Make ExplicitGCInvokesConcurrent default for Jira
- Closed
-
JRASERVER-64331 Ship Jira with G1GC enabled by default
- Gathering Interest
-
HL-1349 Loading...
- was cloned as
-
JRASERVER-75928 Is there a replacement for the garbage collection JVM args in Java 11
- Gathering Interest
- mentioned in
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...