IBM Java线程和监视器转储分析器允许您通过其启发式引擎和Javacore分析来查找死锁,可能挂起的线程和资源争用。
下载:https://public.dhe.ibm.com/software/websphere/appserv/support/tools/jca/jca467.jar
介绍
在某些平台上,在某些情况下,Javacore被称为``Javadump''。创建Javacore的代码是JVM的一部分。您可以通过使用环境变量和运行时开关来控制它。Javacore包含与在执行过程中某个时刻捕获的JVM和Java应用程序有关的诊断信息。例如,该信息可以是有关操作系统,应用程序环境,线程,本机堆栈,锁和内存的信息。确切的内容取决于您所运行的平台。默认情况下,当JVM意外终止时,将出现Javacore。也可以通过将特定信号发送到JVM来触发Javacore。尽管Sun Solaris JVM中存在Javacore或Javadump,但Javacore的许多内容都是IBM的增值产品。也就是说,它仅存在于IBM JVM中。
按原样提供IBM Java线程和监视器转储分析器。
Javacore文件的位置
操作系统 | Javacore文件名 | 格式含义 |
Windows和Linux | javacore.YYYYMMDD.HHMMSS.PID.txt | YYYY =年,MM =月,DD =天,SS =秒,PID =进程ID
|
艾克斯 | javacorePID.TIME.txt | PID = processID,TIME =自1/1/1970起的秒数 |
先决条件
- Java 2 Runtime Environment 6或更高版本
特征
- Javacore总结
- 线程详细视图
- 监视详细信息视图
- 吊死嫌疑人名单
- 线程比较视图
- 线程比较摘要
- 监视器锁定比较视图
- IBM JVM的垃圾收集器统计信息
- 选项视图
- 键盘操作
- 外观配置支持
- 关于IBM Sov JVM的kCluster配置的建议。
如何运行IBM Thread and Monitor Dump Analyzer for Java
您需要使用Java 2 Platform Standard Edition版本6或更高版本的Java Runtime Environment(JRE)来运行IBM Thread和Monitor Dump Analyzer for Java。
用法<Java路径> java Xmx[heapsize] jarjca <Java版线程和监视器转储分析器> .jar [由路径定界符分隔的javacore文件] [分析输出HTML文件]
Windows系统上的路径定界符为分号;
Unix系统上的路径分隔符是冒号:
例如,
C:\ java \ bin \ java -Xmx200m -jar jca13.jar
=>启动IBM Thread and Monitor Dump Analyzer for Java版本1.3,并从菜单中打开javacore文件。
/ usr / java / bin / java Xmx200m jar /usr/jca/jca13.jar /usr/javacore.20060228.171037.2084.txt;/usr/javacore.20060228.171048.2084.txt
=>使用/usr/javacore.20060228.171037.2084.txt和/usr/javacore.20060228.171048.2084.txt启动Java版本1.3的IBM Thread and Monitor Dump Analyzer
java Xmx500m jar jca13.jar /usr/javacore.20060228.171037.2084.txt;/usr/javacore.20060228.171048.2084.txt output.html
=>使用/usr/javacore.20060228.171037.2084.txt和/usr/javacore.20060228.171048.2084.txt启动Java的IBM Thread and Monitor Dump Analyzer,并在不调用图形用户界面的情况下在output.html中生成分析输出
如果在处理Javacore文件时出现java.lang.OutOfMemoryError,请尝试增加最大堆大小(-Xmx)值以为JVM提供更多内存。
由于性能问题,最大堆大小不应大于此工具的可用物理内存大小。
1.启动IBM Thread and Monitor Dump Analyzer for Java
以下屏幕是初始屏幕的快照。
2.如果在启动过程中未在命令行中指定Javacore文件,请选择File-> Open Thread Dumps打开Javacore文件。
3.您可以选择多个Javacore文件
4.线程转储列表表中列出了已加载的Javacore文件。
线程转储列表提供以下信息:
- 名称:Javacore的文件名
- 可运行/总线程数:可运行和总线程数
- 可用/已分配堆:可用和已分配的Java堆量
- AF / GC计数器:分配失败和垃圾收集器计数器
- 监视器:锁定的监视器数。如果Monitor中有任何死锁,则会显示死锁
5.单击Javacore以显示Javacore的摘要。
显示以下有关IBM Javacore的信息:
- 文档名称
- 线程转储的原因
- 日期
- 进程ID
- Java版本
- Java堆信息
- 最大Java堆大小
- 初始Java堆大小
- 垃圾收集柜台
- 分配失败计数器
- 免费Java堆大小
- 分配的Java堆大小
- 当前线程名称
- Java堆中已加载类的数量
- 推荐的kCluster大小(仅适用于IBM SDK 1.4.2和1.3.1 SR7或更高版本)
- Java命令行
非IBM Javacore(或线程转储)提供的信息有限。
6.单击鼠标右键以弹出菜单。或单击分析菜单以显示子菜单。
7.以下是Javacore的“线程详细信息视图”:
线程按线程名称排序。线程详细信息视图提供以下信息:
- 线程名称:线程名称
- 线程状态:线程的状态,例如,可运行,正在等待或已挂起
- 方法名称:最近调用的方法或预定义的状态或堆栈跟踪模式,例如IDLE,LISTEN和KEEP-ALIVE
- Java堆栈跟踪:当选择一个线程的Java堆栈跟踪显示。
- 本机堆栈跟踪:本机堆栈跟踪显示在Java堆栈跟踪下方(如果可用)
注意:
- 空闲线程是准备接收工作但没有建立连接的线程。
- KEEP-ALIVE线程是一个空闲线程,可以随时接收工作并建立了连接。
- LISTEN线程在端口上侦听
8.如果线程拥有监视器,则线程名称会用特殊图标标记,并显示正在等待监视器锁定的线程。
在以下示例中,线程“ Plato priority9”具有监视器所有权图标。在等待线程列表中,显示Aristotle和Socrates线程。
如果线程正在等待监视器锁定,则线程名称会用特殊图标标记,并显示拥有监视器锁定的线程。
在下面的示例中,线程Aristotle priority5在名称列中等待监视器锁定图标。
在“阻止者”列表中,显示拥有监视器的柏拉图优先级9:
9.您可以通过单击表标题对任何列进行排序。以下是按线程状态排序的“线程详细信息视图”
10.以下是按方法分类的“线程详细信息视图”。
11.默认情况下,死锁线程显示为灰色,如下所示:
12.按住Ctrl键选择多个Javacore,然后单击鼠标右键,然后选择Compare Threads。
或选择分析->比较线程以显示“比较线程”视图
13.以下是两个Javacore的Compre Threads视图。
摘要显示在右窗格中。线程名称和方法名称显示在表中的每个Javacore中。
- 进程ID
- First Dump:第一个Javacore的时间戳
- Last Dump:最后一个Javacore的时间戳
- 每分钟的垃圾收集数:每分钟的垃圾收集数
- 每分钟的分配失败次数:每分钟的分配失败次数
- 经过的时间:第一个Javacore和最后一个Javacore之间的时间
- 吊死嫌疑人的数量
- 吊死嫌疑人名单
红色背景指示线程中可能挂起。绿色边框表示可运行线程。蓝色边框表示正在等待监视器。黄色边框表示正在等待状态。
14.选择线程后,将显示线程摘要。
15.选择“监视器详细信息”以显示“监视器详细信息”视图
16. 监视器锁定信息以树格式显示
总大小是与特定监视器直接或间接相关的线程总数。
大小是与特定监视器直接相关的线程数。
单击其中一个线程。
有47个线程正在等待由Servlet Engine Transports锁定的监视器:3049
死锁线程带有图标显示,如下所示:
17.您可以单击任何线程以显示有关监视器和线程信息的详细信息
18.您也可以在比较监视器视图中比较监视器。选择比较显示器菜单
19.红线表示“比较监视器”视图中的特定线程可能挂起。
如果单击某个线程,则在中间窗格中显示等待线程拥有的锁的线程列表。如果单击中间窗格中的任何线程,则线程信息将显示在右窗格中。
20.选择View-> Option,为Java配置IBM Thread和Monitor Dump Analyzer。
21.您可以更改默认目录,颜色和其他选项。
22-1。在颜色中选择一个状态,然后单击更改按钮以更改颜色。
22-2。选择一种颜色,然后单击确定
23.在option的Advanced窗格中,您可以自定义堆栈跟踪模式识别引擎:
ID 列表:自定义堆栈跟踪模式的ID列表
ID :堆栈跟踪模式的标识符。不允许有空格。
堆栈名称:从线程详细信息视图中看到的堆栈跟踪模式名称
堆栈跟踪:堆栈跟踪模式。语法:``at package.class.method''。不允许使用括号。
描述:堆栈跟踪模式的描述
如果发现任何匹配项,该工具将搜索堆栈跟踪模式并在线程详细信息视图中显示堆栈名称
警告:如果已加载线程转储,请添加新的堆栈跟踪模式,请重新打开线程转储。
24.您可以通过选择清除控制台菜单在控制台中删除消息
25.选择“关闭线程转储”以卸载Javacore文件。
26.帮助菜单显示帮助屏幕。
27.选择“帮助”->“关于”以显示IBM Thread和Monitor Dump Analyzer for Java的版本信息