Windows 服务应用程序上的 Java5 - 获取 Full Thread Dump 需要说明

标签 java windows dump java-5

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

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()) 中打印的方法不是一个选项,因为我们需要重构大量应用程序才能使其工作。

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

提前致谢!

最佳答案

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

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

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

引用资料:

关于Windows 服务应用程序上的 Java5 - 获取 Full Thread Dump 需要说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3626492/

相关文章:

Windows PATH 变量是否以管理员身份运行 CMD 是不同的

c# - Windows:从 2 只鼠标中分离输入

windows - 有什么方法可以在没有特定目录的情况下克隆 git 存储库?

linux - g++ -shared -fPIC helloworld.cpp -o ./hw, 核心转储

oracle - 将 CLOB 字段转储到文件中?

java - 如何让 FlyWay 运行我的迁移? "Schema is up to date. No migration necessary."

java - 为什么这两者有不同的值(value)?

c++ - 当提供 windows .dmp 或 .minidmp 时,您如何识别(并访问)要使用的模块/调试符号

java - Spring data JpaRepository 分页和分组依据

java - 反向迭代 LinkedHashMap