Windows服务应用程序上的Java5-获取完整线程转储需要澄清

Windows服务应用程序上的Java5-获取完整线程转储需要澄清,java,windows,dump,java-5,Java,Windows,Dump,Java 5,我在这里浏览了几篇文章,例如: 但是我没有得到确切的答案 问题是: Windows上有一个作为服务运行的Java5应用程序(因此我们没有一个控制台,可以使用Ctrl+Break进行转储)。 有时应用程序挂起,我们需要一个线程转储 我们尝试了“jstack”,但它在我们的环境中不起作用(我们发现它只兼容Java6) 我们制作了一个C++应用程序,它调用通过.dll调用方法连接到java app进程的线程转储,因此它需要本地管理员权限,这不是很好。p> 因此,我们希望其他选项可以在没有管理员权限

我在这里浏览了几篇文章,例如:

但是我没有得到确切的答案

问题是: Windows上有一个作为服务运行的Java5应用程序(因此我们没有一个控制台,可以使用Ctrl+Break进行转储)。 有时应用程序挂起,我们需要一个线程转储

我们尝试了“jstack”,但它在我们的环境中不起作用(我们发现它只兼容Java6)

我们制作了一个C++应用程序,它调用通过.dll调用方法连接到java app进程的线程转储,因此它需要本地管理员权限,这不是很好。p> 因此,我们希望其他选项可以在没有管理员权限的情况下工作,并且可以在不需要大量修改现有代码的情况下使用Java5

方法打印循环中的线程转储
(thread.getAllStackTraces())
不是一个选项,因为我们需要重构许多应用程序才能使其工作

因此,最好的选择是只使用一个在应用程序“外部”工作的util


提前谢谢

一个选项是使用jmap转储所有信息,然后使用其他工具对其进行分析

jmap -dump:format=b,file=<filename>.hprof <jvm_pid>
jmap-dump:format=b,file=.hprof
我不确定,我认为它在Java5上可以工作

参考资料:


一个选项是使用jmap转储所有信息,然后使用其他工具对其进行分析

jmap -dump:format=b,file=<filename>.hprof <jvm_pid>
jmap-dump:format=b,file=.hprof
我不确定,我认为它在Java5上可以工作

参考资料:


您可以使用JConsole连接到进程,以检测死锁并获取线程的堆栈跟踪。有关更多信息,请参见此处:

您可以使用JConsole附加到进程,以检测死锁并获取线程的堆栈跟踪。有关更多信息,请参见此处:

不知道这是否适用于您不知道这是否适用于您