How to monitor a Java program using Jconsole?

2019-02-12 17:26发布

问题:

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:

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

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

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



回答2:

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.


回答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.