我们如何从正在运行的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应用程序不是从命令行启动时。