我们如何从正在运行的JBoss实例生成和分析线程转储?

时间:2020-03-05 18:52:28  来源:igfitidea点击:

我们如何从正在运行的JBoss实例生成和分析线程转储?

解决方案

回答

http://java.sun.com/developer/technicalArticles/Programming/Stacktrace/

...

"在UNIX平台上,我们可以使用kill命令将信号发送到程序。这是退出信号,由JVM处理。例如,在Solaris上,我们可以使用命令kill -QUIT process_id,其中process_id是Java程序的进程号。

或者,我们可以在启动Java程序的窗口中输入键序列<ctrl> \。发送此信号将指示JVM中的信号处理程序以递归方式打印出有关线程的所有信息,并在JVM内部进行监视。"

...

"确定线程状态

我们将在JVM堆栈跟踪的快照中看到处于许多不同状态的许多不同线程。使用的密钥是:

R正在运行或者可运行的线程

S挂线

等待条件变量的CW线程

MW线程正在等待监视器锁定

" MS线程已暂停,等待监视器锁定"

回答

有一个特定于JBoss的方法,它更加用户友好:

http://community.jboss.org/wiki/GenerateAThreadDumpWithTheJMXConsole

当我们无权直接访问主机(需要"杀死")时,此功能特别有用。

回答

在此处找到的stacktrace应用程序也很有用,尤其是在Windows计算机上,当Java应用程序不是从命令行启动时。