Performance Zone is brought to you in partnership with:

I develop software professionally since 2001 for a variety of small and large organizations. Assignments vary from the development of mobile and web applications to software architecture. I watch and study new technology closely to find out how this can be applied in software solutions. The ultimate goal is to realize a solution that really matters. Besides developing software I give presentations and training on a regular basis on various subjects and technologies. Jamie is a DZone MVB and is not an employee of DZone and has posted 9 posts at DZone. You can read more from them at their website. View Full User Profile

Monitoring an IBM JVM with VisualVM

02.21.2013
| 6565 views |
  • submit to reddit
JDK6 update 7 and onward include a tool called VisualVM. VisualVM is a visual tool with monitoring and profiling capabilities for the JVM. With VisualVM you can:
  1. Monitor heap usage
  2. Monitor CPU usage
  3. Monitor Threads
  4. Initiate garbage collections
  5. Profile CPU and memory
  6. And more…
Although VisualVM is distributed with the Oracle JDK, it can also be used to monitor IBM JVM’s. VisualVM is not able to connect to the IBM JVM locally. JMX must be used instead. To enable JMX monitoring on the IBM JVM open the WebSphere administrative console and:
  1. navigate to: Server -> Server Types -> WebSphere application servers ->[SERVER_NAME]
  2. Expand Java and Process Management and click Process definition
  3. Click Java Virtual Machine
  4. In the Generic JVM arguments field append the following properties: -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=1099
  5. Restart the server
To start monitoring the JVM with VisualVM start VisualVM by navigating to [JDK_HOME]\bin and start jvisualvm.exe (please note that when VisualVM is downloaded as a separate package the executable is called visualvm.exe instead). In VisualVM click File -> Add JMX Connection. Specify localhost:1099 in the connection field and click OK. If everything went OK, you should see the localhost:1099 connection under the Local node in the tree on the left. Double-click this node to start monitoring. See the following screenshot for an example:

When using a JMX connection to monitor the JVM please be aware that not all functionality can be used compared to monitoring a local JVM. Profiling memory is for example not possible.

The above configuration was tested on:
  • Windows 7 64-bit
  • IBM JDK1.6 64 bit
  • WebSphere Application Server version 7.0
Note: Before JDK6 update 7, VisualVM can also be downloaded separately from http://visualvm.java.net/download.html Note: To actually test if port 1099 is listening for connections use (on Windows) the netstat –a command and check wether the port is present and listening.


Published at DZone with permission of Jamie Craane, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)