确定线程瓶颈

线程视图用作检测线程瓶颈的主要视图。它显示程序中每个线程的活动记录,并帮助您找出线程争用和死锁。

先决条件:收集线程数据

当不能立即获得线程正在等待的资源时就会发生争用;争用会降低代码的执行速度,但是经过一段时间之后就会消除这种情况。

当一个线程正在等待已被第二个线程锁定的资源,而第二个线程正在等待被第一个线程锁定的资源时,就会发生死锁。死锁可能会涉及到两个以上的线程。死锁决不会自行解决。它经常会引起整个应用程序中断或具有死锁的那部分应用程序中断。

要查找线程争用和死锁:

  1. 显示线程视图:右键单击“线程分析”概要分析资源,然后单击打开方式 > 线程视图
  2. 线程视图中查找线程之间的垂直箭头。 单个箭头表示线程争用,其中一个线程正在等待另一个线程释放锁定。多个箭头表示死锁,即两个线程属于同一死锁线程状态。菱形标记表示尽管线程正在等待一个锁定,但无法确定占有该锁定的线程。
  3. 将光标停留在正在等待锁定或死锁的线程段上。这将显示一个工具提示,它指定锁定的名称,并且指出正占有该锁定的线程。

下面是一个争用示例:

“线程视图”窗口的图像,其中的垂直箭头表示争用

下面是一个死锁示例:

“线程视图”窗口的图像,其中的一对垂直箭头表示死锁

注: 如果使用“执行时间分析”概要分析类型对程序进行概要分析,则您可以收集和显示线程数据,但是仅适用于处于“正在运行”和“死亡”状态的线程。要显示瓶颈,您必须在您的概要分析集中包含“线程分析”概要分析类型。

下列主题提供了有关控制线程视图的指示信息:

相关任务
确定线程瓶颈背后的方法
相关参考
线程视图
反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.