我正在 Windows 2003 x64 上运行 JBoss 4.0.5,想知道是否有任何方法可以获取所有线程的转储?
它与 FireDaemon 一起启动,所以我没有可以 ctrl-break 的控制台窗口。
它在java 1.5下运行,所以jstack将无法工作。
我尝试了一些有人制作的名为sendsignal.exe的程序,我认为它实际上使JBoss崩溃了(不确定,但不会再尝试一次),如果这是因为JBoss在win x64下运行或者因为它作为LocalSystem运行并且我只能访问我不认识的“普通”用户。它实际上可以在我的笔记本电脑上运行,但它是 32 位的,并且我以与 JBoss 相同的用户身份运行。
有人还有其他可行的想法吗?
我实际上找到了比Gowri更好的方法 建议(在开始实施jsp之后)。
实际上有一种方法可以从服务器信息 MBean 中的 jmx-console 转储线程,请参阅使用 JMX 控制台生成线程转储
您可以编写一个执行
Thread.getAllStackTraces()
操作的 jsp,并以合适的格式打印出 stacktracelements。然后,随时点击该 jsp 的 URL 即可获得当时所有线程的堆栈转储。
打开CMD并转到目录“cd F:\Kronos\jdk in”并输入以下命令:jstack > F:\Kronos\JBossThreadDump\logs hread_dump.txt
PID 可以在任务管理器的详细信息选项卡中找到。
例如:jstack 156 > F:\Kronos\JBossThreadDump\logs hread_dump.txt