0

我遇到了我的 Java 进程挂起的情况。我通过 eclipse 运行了我的 junit tcases,这反过来又启动了另一个挂起的进程。

有没有办法从挂起的进程生成 Java 内核,因为 ctrl-brk 在这种情况下对我没有帮助,因为我没有控制台。

我尝试搜索 jstack 之类的选项,因为我使用的是 IBM jvm,SendSignal 无法在 64 位上运行,并且来自 adapatj 的 stacktrace 不再可用。我也尝试了 jconsole,但是当我尝试选择进程 ID 时,它只是继续尝试连接到给定的进程。

我只知道挂起的 Java 进程的进程 ID,我需要 Java 内核来分析为什么该进程处于挂起状态。

4

2 回答 2

0

因为IBM JVMs这里提到了如何获取堆转储的部分:http: //help.eclipse.org/indigo/index.jsp?topic= %2Forg.eclipse.mat.ui.help%2Ftasks%2Facquiringheapdump.html

IBM 虚拟机的系统转储和堆转储

Memory Analyzer 还可以从 IBM 系统转储和便携式堆转储 (PHD) 文件中读取与内存相关的信息。

为此,只需将 IBM DTFJ 功能安装到 Memory Analyzer 0.8 或更高版本中。

遵循 IBM DTFJ 功能部件安装说明。
如果 DTFJ 功能已成功安装,则文件 > 打开堆转储菜单还应为文件类型提供以下选项:
- IBM DTFJ for 1.4.2 VMs
- IBM DTFJ for Portable Heap Dumps
- IBM SDK for Java (J9) Javadump
- IBM SDK for Java (J9) 系统转储

生成转储所需的最低 IBM 虚拟机版本是 IBM JDK 1.4.2 SR12、5.0 SR8a 和 6.0 SR2,尽管以前的版本可能会生成可用于 Memory Analyzer 但根信息不准确的转储

于 2012-12-15T12:02:13.267 回答
0

转到 Eclipse 的“调试”视图,选择挂起的进程,右键单击,选择“属性”,您将拥有 eclipse 用来启动该进程的命令。在控制台中启动此命令,然后按 Ctrl-Break。

于 2012-12-15T12:05:19.230 回答