Oracle® Developer Studio 12.5:性能分析器教程

退出打印视图

更新时间: 2016 年 6 月
 
 

检查 jsynprog 数据

该过程假定您已经按照上一节中所述创建了实验。

  1. jsynprog 目录启动性能分析器并按如下所示装入实验,如果实验名不是 test.1.er,则指定您的实验名称。

    % analyzer test.1.er

    实验打开时,性能分析器将显示 "Overview"(概述)页面。

    image:性能分析器概览

    请注意,性能分析器的工具栏现在具有查看模式选择器,该选择器最初设置为 "User Mode"(用户模式),显示程序的用户模型。

    "Overview"(概述)显示实验运行了大约 81 秒,但是使用的总时间多于 1600 秒,表示进程中平均存在 20 个线程。

  2. 选中 "Sleep Time"(休眠时间)和 "User Lock Time"(用户锁定时间)度量的复选框以将其添加到数据视图。

    image:选中了 “Sleep Time“(休眠时间)和 “User Lock Time“(用户锁定时间)的复选框

    请注意,"Metrics Preview"(度量预览)将更新以显示添加了这些度量后数据视图的样子。

  3. 选择导航面板中的 "Threads"(线程)视图,您将看到线程的数据:

    image:性能分析器的 “Threads“(线程)视图

    仅 "Thread 2"(线程 2)积累了大量 "Total CPU"(总 CPU)时间。其他每个线程针对 "Total CPU"(总 CPU)时间仅具有几个分析事件。

  4. 选择 "Threads"(线程)视图中的任何线程并在右侧的 "Selection Details"(选择详细信息)窗口中查看该线程的所有信息。

    您应该看到除了 "Thread 1"(线程 1)和 "Thread 2"(线程 2)外,几乎所有线程都在 "User Lock"(用户锁定)状态下花费了其所有时间。这显示了 JVM 如何在内部同步自身。"Thread 1"(线程 1)启动用户 Java 代码,然后休眠,直到其完成。

  5. 返回 "Overview"(概述)并取消选中 "Sleep Time"(休眠时间)和 "User Lock Time"(用户锁定时间)。

  6. 选择导航面板中的 "Functions"(函数)视图,然后单击列标题以便按 "Exclusive Total CPU Time"(独占总 CPU 时间)、"Inclusive Total CPU Time"(包含总 CPU 时间)或 "Name"(名称)排序。

    可以按降序或升序排序。

    保持列表按 "Inclusive Total CPU Time"(包含总 CPU 时间)降序排序,然后选择最顶部的函数 jsynprog.main()。该例程是 JVM 调用的初始例程以启动执行。

    image:性能分析器的 “Functions“(函数)视图,包含 “Called-by/Calls“(调用方/调用)面板

    请注意,"Functions"(函数)视图底部的 "Called-by/Calls"(调用方/调用)面板显示 jsynprog.main() 函数被 <Total> 调用,表示其位于堆栈顶部。

    该面板的 "Calls"(调用)侧显示 jsynprog.main() 调用各种不同例程,关于 Java-C++ 分析教程 中所示的直接从主例程调用的每个子任务使用其中一个例程。该列表还包括几个其他例程。