java其他线程获取主线程方法 如何获得java线程转储
转载
In this Document
APPLIES TO: Oracle Weblogic Server - Version 8.1 and later
Information in this document applies to any platform.
MAIN CONTENT 用途本文提供了有关在 WebLogic Server 环境中获取 java 线程转储的各种方法的信息。 线程转储是指用于分析和排除与性能相关的问题(例如,服务器挂起、死锁、运行缓慢、应用程序闲置或卡住、数据库交互缓慢,等等)的基本诊断信息。 在 WebLogic Server 中获取线程转储的各种方法WebLogic Server (WLS) 和 Java 提供了若干用来生成线程转储的方法,详细信息如下。建议始终通过使用操作系统 (OS) 命令来获取线程转储,而不是使用 Java 类或管理控制台。因为如果控制台正处于挂起状态,用户将不能连接到它来生成线程转储。 - 在 WLS 从命令行脚本启动时,使用操作系统命令来获取线程转储:
- 在 Windows OS 上,可以通过以下命令创建线程转储
线程转储将生成到服务器标准输出中 - 在与 POSIX 兼容的平台(例如,Solaris 和 Linux)上,首先使用 ps -ef | grep java 识别进程 ID (pid),然后运行
kill -3 <pid> 2>&1
- 使用 beasvc(适用于 WLS 10.3.5 以及之前的版本):
beasvc -dump -svcname:<service_name>
- service_name 是运行服务器实例的 Windows 服务(例如,mydomain_myserver)
- 使用 wlsve(从 10.3.6 到 12.1.1):
wlsve -dump -svcname:<service_name> - 使用 weblogic.WLST:
setDomain.cmd or setDomain.sh depending on the OS
java weblogic.WLST
connect("<username>","<password>","t3://<url>:<port>")
threadDump() 线程转储将在 Thread_Dump_AdminServer.txt 中生成。
- Note 1274713.1 通过一个示例对 WLST 线程转储作了详细介绍。此示例是关于如何定义每个转储之间的休眠时间和要进行的转储次数.
- 在命令行或 shell 中,可以通过以下命令(在 WLS 9.0 中已弃用)生成线程转储:
setDomain.cmd or setDomain.sh depending on the OS java weblogic.Admin <url>:<port> -username <username> -password <password> THREAD_DUMP - 在 WLS 管理控制台中,可以通过导航到“服务器”->“<server_name>”->“监视”->“转储线程堆栈”来创建线程转储。此方法可能会导致线程转储被截断或不完整.
- 在服务管理工具中,当 WLS 作为一项 Windows 服务运行时,请参阅 Note 1348645.1
- Java VisualVM 还可用于在应用程序运行时进行线程转储,有关更多详细信息,请参阅 http://docs.oracle.com/javase/6/docs/technotes/guides/visualvm/applications_local.html
- 用 jstack:
jstack <pid> or jstack -l <pid> to print additional information about locks
-
- 从 JRockit 命令行中:
2. jrcmd <pid> print_threads
|
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。