【问题标题】:Java5 on Windows service app - get Full Thread Dump need clarificationWindows 服务应用程序上的 Java5 - 获取全线程转储需要澄清
【发布时间】:2010-09-02 11:08:49
【问题描述】:

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

java stack dump on windows

Thread dump programmatically /JDI (Java Debugger Interface) 但没有得到确切的答案。

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

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

所以我们制作了一个 C++ 应用程序,它通过附加到 Java 应用程序进程的 .dll 调用方法调用线程转储,因此它需要本地管理员权限,这不太好。

因此,我们希望其他选项可以在没有管理员权限的情况下使用,并且可以与 Java 5 一起使用,而无需对现有代码进行大量返工。

在 LOOP 线程转储中打印的方法(Thread.getAllStackTraces()) 不是一个选项,因为我们需要重构大量应用程序才能使其正常工作。

因此,仅在应用程序“外部”工作的实用程序将是最佳选择。

提前致谢!

【问题讨论】:

标签: java windows dump java-5


【解决方案1】:

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

jmap -dump:format=b,file=<filename>.hprof <jvm_pid>

我不确定,我认为它可以在 Java 5 上运行。

参考资料:

【讨论】:

    【解决方案2】:

    您可以使用 JConsole 附加到进程以检测死锁并获取线程的堆栈跟踪。欲了解更多信息,请参阅此处:http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-26
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 2023-03-28
      相关资源
      最近更新 更多