如何使用 Jconsole 监控 Java 程序?

Posted

技术标签:

【中文标题】如何使用 Jconsole 监控 Java 程序?【英文标题】:How to monitor a Java program using Jconsole? 【发布时间】:2014-04-12 09:06:16 【问题描述】:

我编写了一个程序,使用 2 个线程打印从 1 到 200 的数字。

现在我想使用 JConsole 监控这个程序。

基本上我想学习如何使用 JConsole 来监控应用程序。

我搜索了谷歌,但找不到有用的东西。

我怎样才能做到这一点?

当我在 bin 文件夹中启动 jconsole.exe 时。它要求提供主机名和端口号。 就我而言,我猜没有。 谁能指导一下。

【问题讨论】:

【参考方案1】:

您需要通过添加以下JVM 参数来启用JMX

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

这些参数将允许任何JMX 监控工具访问和监控您的应用程序。

另外我建议你使用visualVM 它更强大的工具。 visualVM 的一些功能:

提供 CPU 分析。 提供有关线程的所有信息。 提供 JVM 堆和内存状态。 提供有关 GC 活动的信息。

【讨论】:

我应该在哪里添加这些行? 如果你使用Eclipse IDE,那么Right click on your project -> Properties -> Run/Debug Settings -> Select your launcher class -> Arguments tap 启动你的应用程序,开始jconsole,你会找到一个你的应用程序进程。 欢迎,如果解决了您的问题,请不要忘记接受它作为答案:)。【参考方案2】:

假设您在包 p1 下有一个类 Test,您可以在其中使用 2 个线程(您想要监控)打印从 1 到 200 的数字。

所以要使用 jconsole 来监控您的应用程序,您需要先编译并执行您的代码,并且在您的代码执行时...

Start -> Run -> jconsole.exe 并点击/按下Enter

选择您要监控的应用程序,然后点击Connect

或者,您也可以使用 VisualVM 来实现此目的。

【讨论】:

【参考方案3】:

JConsole 在 JConsole 启动时查找所有正在运行的应用程序。然后列表中只会显示当前运行的应用程序端口和主机。因此,首先您需要启动应用程序,然后启动 JConsole。

【讨论】:

以上是关于如何使用 Jconsole 监控 Java 程序?的主要内容,如果未能解决你的问题,请参考以下文章

JConsole监控Java程序的运行情况

使用JCONSOLE远程监控JVM

如何使用JDK自带工具JConsole

如何利用 JConsole观察分析Java程序的运行,进行排错调优

JVM 监控工具——jconsole

使用JConsole监控