Garbage Collection Log Settings for Jira when using Java Version 11
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Problem
Trying to run JIRA leads to an error similar to the one below:
-XX:+PrintGCDateStamps --> Unrecognized VM option 'PrintGCDateStamps'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Diagnosis
Environment
AdoptOpen JDK 11
Cause
Starting with JIRA 8.2 we are supporting Java 8 and Java 11. There are significant differences in the Garbage Collection Log Settings between these 2 versions. Trying to run JIRA on Java 11 with the old settings will lead to errors like mentioned above.
See 43 GC logging flags removed from Java 9 for more details.
When migrating from a setup with Java 8 to another with Java 11 the Javaflags have been taken over.
Resolution
The following Java flags are no longer supported in Java 9 and upwards, as the Unified JVM Logging has been introduced
When running JIRA with Java 11, these flags below must be removed, otherwise JIRA will fail to start.
-XX:+PrintAdaptiveSizePolicy
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+PrintGCCause
-XX:+PrintTenuringDistribution
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=5
-XX:GCLogFileSize=20M
-Xloggc:<PATH_TO_GC_LOGS>
Make sure to add the one below to keep logging GC activity.
-Xlog:gc*:file=<PATH_TO_GC_LOGS>:tags,time,uptime,level:filecount=5,filesize=20M
Additional Notes
Update: Failed to recognize file format in GCViewer
If you are analyzing the GC logs on GCViewer, you might run into this error :
Caused by: java.io.IOException: Failed to recognize file format.
This is due to JRASERVER-71420 - Getting issue details... STATUS
To work this around add tags and level to the configuration ("tags" and "level" parameters must be added):
-Xlog:gc*:file=<PATH_TO_GC_LOGS>:tags,time,uptime,level:filecount=5,filesize=20M