About Pierre Hugues Charbonneau

Pierre-Hugues Charbonneau (nickname P-H) is working for CGI Inc. Canada for the last 10 years as a senior IT consultant. His primary area of expertise is Java EE, middleware & JVM technologies. He is a specialist in production system troubleshooting, root cause analysis, middleware, JVM tuning, scalability and capacity improvement; including internal processes improvement for IT support teams. P-H is the principal author at Java EE Support Patterns.

GC Memory Visualizer Tutorial – Part1

As you may have read from past articles, one of the key Java programmer skills to acquire is your ability to understand and assess the health of the JVM such as the Java heap memory footprint along with the garbage collection process.

In order to achieve the above goals, all JVM vendors (Oracle, IBM…) provide, via the verbose:gc parameter, a way to generate and log the runtime JVM & GC activity. That being said, this does not mean that you will have to analyze raw GC data forever. Monitoring and log analyzer tools have emerged over the past years allowing us to better “visualize” the complexity of the JVM runtime processing.

This article is the first of a series that provides you with a tutorial on how to get started and take advantage of the IBM Garbage Collection and Memory Visualizer. Future articles will cover in more detail the different GCMV features via examples and problem simulations.

JVM fundamentals

If you are not familiar with the JVM principles and the different naming conventions, I first recommend that you go through the articles below. Improving your Java and JVM troubleshooting skills is like building a house: build a solid foundation and structure first before focussing on the finishing work.

GC and Memory Visualizer – Tool overview

GCMV_part1_Overview

GCMV is essentially a free tool, developed by IBM, which allows you to “visualize” and analyse the JVM memory usage and garbage collection activity of your Java application(s). Its reporting and data visualisation features are extremely useful to understand the Java heap memory footprint trend of your application over time and can help detect problems such as memory leaks.

Such capabilities are achieved due to the tool’s ability to parse and interpret many types of GC logs (Oracle HotSpot, IBM JVM, native memory log etc.). Finally, GCMV also provides out-of-the-box recommendations via its internal statistical engine.

GCMV is best used in conjunction with a comprehensive capacity planning strategy so please continue to do your due diligence from that perspective.

The rest of the article will now focus on how getting started quickly with GCMV.

Step 1 – Download IBM Support Assistant

First, you will need to download and install IBM Support Assistant (GCMV is installed within the IBM Support Assistant Workbench).

GCMV_part1_ISA

Step 2 – Add GCMV as a new add-on

Once you have installed ISA, you will need to download GCMV as an ISA add-on as per the following steps:

  1. From the ISA main screen, select Launch Activity > Analyze Problem.
  2. Now select the link Find New Tools Add-ons.
  3. Expand JVM-based Tools, select and install IBM Monitoring and Diagnostics Tools for Java – Garbage Collection and Memory Visualizer for ISA.
  4. You should now see GCMV under the ISA Tools Catalog section.

GCMV_part1_GCMV_addon

Step 3 – Load and visualize your first JVM GC log sample

You are now ready to load and analyze your first GC log using GCMV!

  1. Under Tools Catalog, double click on GCMV.
  2. Now browse through your computer and select the desired GC log. The parsing and analysis process will now begin…
  3. Once the parsing process is completed, you will see a graphical view of the GC data along with many other options.
  4. The utilization of the different Java heap memory spaces can be found on the left side. The GCMV recommendations can be found under the graph via the Report tab.

* NOTE: instructions on how to obtain the verbose:gc logs from your JVM runtime environment can be found here.

GCMV_part1_Analysis

I hope you enjoyed this short tutorial on how getting started with the IBM GCMV tool. The next article will cover in more detail a few classic JVM problem patterns such as memory leaks. In the meantime, I recommend that you load any GC log you may have from your application and start to get familiar with the different features of GCMV. Please feel free to comment or ask any question.

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you two of our best selling eBooks for FREE!

JPA Mini Book

Learn how to leverage the power of JPA in order to create robust and flexible Java applications. With this Mini Book, you will get introduced to JPA and smoothly transition to more advanced concepts.

JVM Troubleshooting Guide

The Java virtual machine is really the foundation of any Java EE platform. Learn how to master it with this advanced guide!

Given email address is already subscribed, thank you!
Oops. Something went wrong. Please try again later.
Please provide a valid email address.
Thank you, your sign-up request was successful! Please check your e-mail inbox.
Please complete the CAPTCHA.
Please fill in the required fields.

4 Responses to "GC Memory Visualizer Tutorial – Part1"

  1. WASUSer says:

    Nice aricle, Waiting on the next post in this seris?

  2. WASUSer says:

    I have loaded samples from two different servers, but the tuning recommendation is missing on one of the sample, and I am unable to find any button to enable it. Am I missing something here?

  3. Hi WASUser and thanks for your comments,

    I will release the part #2 to JCG in about one week. It will includes real life scenarios like analyzing a true tenured space memory leak using GCMV.

    For your situation, it is possible that the log sample did not contain enough data for GCMV to come up with recommendations. Please try to capture more data the next time and see if you get better results.

    Thanks.
    P-H

  4. WASUSer says:

    Waiting on Part2 .

Leave a Reply


three × 7 =



Java Code Geeks and all content copyright © 2010-2014, Exelixis Media Ltd | Terms of Use | Privacy Policy
All trademarks and registered trademarks appearing on Java Code Geeks are the property of their respective owners.
Java is a trademark or registered trademark of Oracle Corporation in the United States and other countries.
Java Code Geeks is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.
Do you want to know how to develop your skillset and become a ...
Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you two of our best selling eBooks for FREE!

Get ready to Rock!
You can download the complementary eBooks using the links below:
Close