IBM Support

Garbage Collection and Memory Visualizer

How To


Summary

The IBM Monitoring and Diagnostic Tools - Garbage Collection and Memory Visualizer (GCMV) tool analyzes verbose garbage collection to investigate Java performance and OutOfMemoryError issues.

Steps

Review the documentation for usage. Verbose garbage collection generally has an overhead of less than 0.5% and we recommend always running with it in production.
  1. Ensure Java 17 is on your PATH or specified with -vm in gcmv.ini; for example, IBM Semeru Java 17.
  2. Download:
    1. Windows x86_64/amd64
    2. macOS x86_64/amd64
    3. macOS arm64/aarch64
    4. Linux x86_64/amd64
    5. Linux arm64/aarch64
    6. Linux POWER/ppc64le
    7. Eclipse archived update site
  3. For macOS, open Terminal, change directory to where you downloaded the file and run:
    xattr -d com.apple.quarantine com.ibm.java.diagnostics.visualizer.product*
  4. Extract the download file.
  5. Start GCMV by executing gcmv.exe (Windows), IBM Garbage Collection and Memory Visualizer.app (macOS), or gcmv (Linux)

Additional Information

Revision History
  • 22 May 2024:
    • Add optional -Dgcmv.tmpdir setting to control where HTML reports are written instead of -Djava.io.tmpdir.
    • Fix "Unaccounted pause time" line graph and add a minimum threshold setting under Preferences } GCMV } Parsers } Minimum unaccounted pause time to register (ms)
  • 21 May 2024:
    • Upgrade to Eclipse 2024-03.
    • Add "Unaccounted pause time" line graph which shows the difference between the total exclusive access time and the known GC component times.
    • Handle some cases of rollover causing an invalid minimum x-axis.
    • Correct proportion of time in GC plot.
    • Do not treat 'complete concurrent cycle' as warning.
    • Print warnings to stderr.
    • Add an example -Djava.util.logging.config.file logging file to the installation.
    • Handle a logging file without output to a trace file.
  • 9 April 2024:
    • Add "Warnings" plot (under VGC) and add a recommendation if there are more than 0 warnings
    • Add "Heap fix-up time" plot (under VGC Pause) for heap-fixup elements related to class unloading
    • Don't calculate fragmentation for balanced gcpolicy
  • 10 October 2023:
    • Remove 'Global collections - Total amount tenured' calculation
    • Upgrade to Eclipse 2023-09
  • 28 August 2023:
    • Fix error: Cannot invoke "com.ibm.java.diagnostics.visualizer.data.DataPoint.getRawY()" because "tloa" is null
    • Upgrade to Eclipse 2023-06
  • 13 June 2023:
    • Upgrade to Eclipse 2023-03 (which requires Java 17)
    • Sign JARs and Windows EXEs
    • Add Japanese and Chinese translations
    • Add G1GC safepoint times and humongous allocations
    • Handle new G1GC format for GC Pause times
    • Do not record memory usage during balanced global mark phase
  • 6 July 2022: Upgrade to Eclipse 2022-06 (which requires Java 11)
  • 1 June 2022: Add "Locked without a collection" series for exclusive access acquisitions without a collection. Also add this into the "Proportion of time spent in garbage collection pauses (%)" calculation.
  • 14 March 2022: Combine RCP and headless builds
  • 22 February 2022: Handle more types of G1GC relative timestamps
  • 1 February 2022: Account for new verbosegc concurrent elements and bump version to 2.8.7
  • 12 January 2022: Add more HotSpot G1 metrics (in the VGC category)
  • 29 December 2021: First version
These downloads are provided as is without any warranty or support. For any issues, contact Kevin Grigorenko (kevin.grigorenko@us.ibm.com) and we'll try to resolve any issues as time permits.

Document Location

Worldwide

[{"Type":"MASTER","Line of Business":{"code":"LOB67","label":"IT Automation \u0026 App Modernization"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"ARM Category":[{"code":"a8m3p000000F7ylAAC","label":"IBM WebSphere Liberty-All Platforms-\u003ELiberty Profile-\u003EHang Performance CPU"},{"code":"a8m50000000CdBVAA0","label":"WebSphere Application Server traditional-All Platforms-\u003EHang Performance CPU"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"},{"Type":"MASTER","Line of Business":{"code":"LOB08","label":"Cognitive Systems"},"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG9NGS","label":"IBM Java"},"ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
22 May 2024

UID

ibm16537530