练习 1.3:识别线程瓶颈

在开始之前,必须完成练习 1.2:收集线程数据

使用“线程视图”查找线程瓶颈

“线程视图”显示应用程序中所有线程的状态,并明确指出线程死锁和争用。

要查找瓶颈:

  1. 在“概要分析监视器”中,右键单击“概要分析”资源,并选择打开方式 > 线程视图。打开“线程视图”。它类似于:

    显示此概要分析运行结果的“线程视图”屏幕快照,如下面文本中所述。

    我们感兴趣的是线程之间的垂直箭头。箭头指出一个线程(箭头开始的线程)正在等待另一线程(箭头指向的线程)释放锁定。

  2. 箭头相互之间离得太近,不容易区分。要更清晰地查看,请单击“切换至压缩的时间标度”按钮 ,从缺省的线性时间标度切换至加权时间标度。 “压缩的时间标度”压缩没有发生重要线程操作的时间段。显示更改为类似于:

    显示时间标度更改为“已压缩”后箭头分布的屏幕快照。

  3. 解释“线程视图”如下:
    1. 注意,程序启动后不久,将创建四个 philo* 线程。四个线程全部运行,接着休眠,然后再次简要运行。 程序终止时,所有线程已更改为等待锁定状态。
      注意:某些系统上不会显示明显的“休眠”状态。
    2. philo* 线程正在等待来自其它 philo* 的锁定,后者也正在等待锁定。 在这种情况下,就进入了死锁:程序进入了不能继续的僵局。
      注意:通过将光标停留在等待锁定的线程上,您可以查看有关锁定请求的特定信息。 这将显示一个工具提示,指定锁定的名称并指出正保存该锁定的线程(“锁定线程”)。
  4. 您可以在“属性”视图中查看有关线程段的详细信息。要显示此视图,请选择窗口 > 显示视图 > 属性。 选择线程段以显示其属性。

现在您了解了此死锁发生的原因。您就可以开始练习 1.4:解决线程瓶颈

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.