20

I have written a program to print number from 1 to 200 using 2 threads.

Now I want to monitor this program using JConsole.

Basically I want to learn how to use JConsole for monitoring an application.

I searched google but couldn't find something useful.

How I can achieve this?

When I started jconsole.exe in bin folder. It asks for hostname and port number. Here in my case, there is none, I guess. Can somebody guide.

Thinker
  • 6,820
  • 9
  • 27
  • 54

3 Answers3

15

You need to enable JMX by adding the following JVM arguments :

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8484
-Dcom.sun.management.jmxremote.ssl=false

These parameters will allow any JMX monitoring tool to access and monitoring your application.

Also i suggest you to use visualVM its more powerful tool. some features for visualVM:

  • Provide a CPU profiling.
  • Provide all info about Threads.
  • Provide the JVM Heap and the memory states.
  • Provide Info about the GC activities.
Raphael Amoedo
  • 4,233
  • 4
  • 28
  • 37
Salah
  • 8,567
  • 3
  • 26
  • 43
10

Let's say you have a class Test under package p1 where you have the code to print numbers from 1 to 200 using 2 threads(which you want to monitor).

So to use jconsole for monitoring your application, you would need to compile and execute your code first and while your code is executing...

  • Start -> Run -> jconsole.exe and hit/press Enter

    enter image description here

  • Select the application which you want to monitor and then click Connect.

    enter image description here

Alternatively,you can use VisualVM for this purpose as well.

  • enter image description here
Sandeep Chatterjee
  • 3,220
  • 9
  • 31
  • 47
1

JConsole find all the running application at the time of JConsole start-up. Then only the currently running applications port and host will be displayed in the list. So first you need to start the application then start the JConsole.

Sonu
  • 712
  • 9
  • 7