Visualize Garbage Collection

June 08, 2004

Sun has released (for free) a very cool program called Visual GC 2.0 in their jvmstat toolkit (via: Moazam Raja). The tool will show you graphically how memory is organized into generation in your JVM. This is very handy for tuning garbage collection parameters because you can see how your application uses the JVM's different generations.

For instance if we wanted to visualize garbage collection on a ColdFusion MX application server (note JVM 1.4.2 is required MX 6.1 includes uses version), the first thing we need to know is the process ID of the JVM. This can be found with the utility that comes with jvmstat called jvmps

3416 jvmps.jar

From my testing you need to be running as the same user that created the JVM. So if your running ColdFusion MX as a service on Windows it is probable that the JVM is running under the SYSTEM account. To get around this run C:\CFusionMX\bin\cfstop.bat and then C:\CFusionMX\bin\cfstart.bat this will start CFMX as the user that your logged in as. If your on unix you can just su or sudo using the user CFMX is running as.

Next you just launch the visualgc program:

C:\bin\jvmstat\bat>visualgc 3096

And here's what the output might look like:

Visual GC

Like this? Follow me ↯

You might also like:

1 person found this page useful, what do you think?


Pete, I just downloaded JVM Stat 3.0 from the Sun website. Unfortunately, the jvmps command wasn't included in the latest distribution. Therefore, I can't find the correct process identifier to use for the tool. Any ideas?
You need to use jvmstat 2.0 with CF MX 6.1 and JVM 1.4.2 (you can get it here (see #11). Be sure to follow Pete's other instructions.
The jvmps command has been replaced by jps command in bin directory of SDK 1.5.X You can use : -m and -l options for informations about used options of the JMV running processes listed by jps.

Foundeo Inc.