试图查看无响应JVM的堆栈:jvisualvm和jconsole都无法连接

试图查看无响应JVM的堆栈:jvisualvm和jconsole都无法连接,jvm,jconsole,jvisualvm,Jvm,Jconsole,Jvisualvm,我有一个Java程序在我的本地机器上,过了一段时间后变得没有响应,并且似乎冻结了,没有取得进一步的进展。我猜它会在某个地方阻塞(它同时通过HTTP和JDBC访问远程资源,因此可能会出现阻塞情况)。我正在尝试连接到它,以查看主线程堆栈的视图,从而了解阻塞发生的位置。jvisualvm和jconsole都列出了有问题的JVM(以及在我的系统中运行的其他JVM),但都无法连接 jconsole拒绝使用“连接失败”(即使我尝试了不安全的选项) jvisualvm似乎已连接,但当我点击“采样器”选项卡查看

我有一个Java程序在我的本地机器上,过了一段时间后变得没有响应,并且似乎冻结了,没有取得进一步的进展。我猜它会在某个地方阻塞(它同时通过HTTP和JDBC访问远程资源,因此可能会出现阻塞情况)。我正在尝试连接到它,以查看主线程堆栈的视图,从而了解阻塞发生的位置。
jvisualvm
jconsole
都列出了有问题的JVM(以及在我的系统中运行的其他JVM),但都无法连接

jconsole
拒绝使用“连接失败”(即使我尝试了不安全的选项)

jvisualvm
似乎已连接,但当我点击“采样器”选项卡查看堆栈时,它抱怨如下屏幕截图:


问题是,我正在使用相同的实用程序(
jconsole
jvisualvm
)连接到我系统中的其他JVM,我调用了这些JVM,但没有使用提到的任何JMX选项,我没有任何问题。如何获取此无响应JVM的堆栈以查看其阻塞的位置?

您可以使用
kill-3
收集线程转储


这将显示所有线程以及它们被阻止的位置。

您可以使用
kill-3
收集线程转储


这将向您显示所有线程以及它们被阻止的位置。

我今天遇到了一个类似的问题,JVM完全卡住了,我无法正确地将jconsole/jvisualvm连接到它。另外,
kill-3
也不成功(没有线程转储)


我能够使用
kill-11
触发JVM的coredump,并将其输入到jstack中,如下所示:
jstack/path/to/java/path/to/core.file
。从jstack输出中,我能够提取一些有用的堆栈信息。

我今天遇到了一个类似的问题,JVM完全卡住了,我无法正确地将jconsole/jvisualvm连接到它。另外,
kill-3
也不成功(没有线程转储)


我能够使用
kill-11
触发JVM的coredump,并将其输入到jstack中,如下所示:
jstack/path/to/java/path/to/core.file
。从jstack输出中,我能够提取一些有用的堆栈信息。

这不是显示JVM代码的堆栈吗?我对JVM解释的Java代码的线程感兴趣。这将显示VM中的所有线程、应用程序和系统线程及其状态。然后您可以看到线程阻塞的位置。好的,在我的例子中,-3和-11都起作用。我接受另一个答案,因为它还提到了jstack工具,它不显示JVM代码的堆栈吗?我对JVM解释的Java代码的线程感兴趣。这将显示VM中的所有线程、应用程序和系统线程及其状态。然后您可以看到线程阻塞的位置。好的,在我的例子中,-3和-11都起作用。我接受另一个答案,因为它还提到jstack toolkill-11最初的响应是“无法写入核心转储。核心转储已被禁用。要启用核心转储,请在再次启动Java之前尝试“ulimit-c unlimited”。在运行ulimit之后,产生了内核。kill-11最初的响应是“未能写入内核转储。内核转储已被禁用。要启用内核转储,请在再次启动Java之前尝试“ulimit-c unlimited”。运行ulimit后,生产出了内核。