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.
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...
Alternatively,you can use VisualVM for this purpose as well.
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.
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.