Health Check: Explicit Garbage Collection

Still need help?

The Atlassian Community is here for you.

Ask the community


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

About the health check

A garbage collector (GC) is a memory management tool. This check verifies that you’re using the recommended JVM (Java Virtual Machine) startup parameters for explicit garbage collection (GC).

The check looks for two parameters:

  • ExplicitGCInvokesConcurrent 
  • DisableExplicitGC

If you use the Garbage-First (G1) garbage collector, we recommend configuring your JVM parameters to avoid the risk of explicit STW (stop the world) GC, which causes Jira to become unavailable while the garbage collection cycle runs.

(info) This health check is only shown if you use G1 GC. Other garbage collectors may require different parameters. For more information about G1 GC, check the Oracle documentation.

Understanding the results


IconResultWhat this means
(tick)

The startup parameter ExplicitGCInvokesConcurrent is used.

You're using the recommended configuration.

(warning)

ExplicitGCInvokesConcurrent is not used.

Without this parameter, there is a risk of STW (stop the world) GC.

How do I fix this?

We recommend adding ExplicitGCInvokesConcurrent to the list of startup parameters, as described below.

(warning)

The startup parameter DisableExplicitGC is used.

DisableExplicitGC overrides ExplicitGCInvokesConcurrent, which increases the risk of performance issues.

How do I fix this?

We recommend removing DisableExplicitGC from the list of startup parameters, as described below.

(warning)

The startup parameter DisableExplicitGC is used, and ExplicitGCInvokesConcurrent is not used.

Using DisableExplicitGC increases the risk of performance issues.

How do I fix this?

We recommend removing DisableExplicitGC, and adding ExplicitGCInvokesConcurrent, as described below.


Resolution

If you use G1 GC, we recommend manually adding ExplicitGCInvokesConcurrent to the JVM startup parameters:

  1. Add the following argument to the list of JVM startup parameters:

    -XX:+ExplicitGCInvokesConcurrent
  2. Check that there are no conflicting arguments. If you find the following parameters, remove them from the list of JVM arguments:

    -XX:+DisableExplicitGC
    -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
  3. Restart Jira.


For step-by-step instructions for updating system properties, see Setting Properties and Options on Startup.

For more information about garbage collection, check our Garbage Collection (GC) Tuning Guide.

Last modified on Dec 17, 2019

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.