问题
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.
回答1:
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.
回答2:
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/pressEnter
Select the application which you want to monitor and then click
Connect
.
Alternatively,you can use VisualVM for this purpose as well.
回答3:
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.
来源:https://stackoverflow.com/questions/22280229/how-to-monitor-a-java-program-using-jconsole