概要分析和记录工具 - 发行说明

概要分析和记录工具组件发行说明

1.0 局限性
   1.1 如何在“概要分析和记录”透视图中打开“控制台”视图
   1.2 Probekit:考虑对 Probekit 源文件选择 UTF-8 编码
   1.3 泄漏分析:泄漏分析在 OS/400 iSeries(TM) 上不可用
   1.4 对应用程序进行概要分析的技巧
   1.5 泄漏分析:“将概要分析数据发送至文件”时的意外行为
   1.6 泄漏分析:对 IBM(C) OS/390®(SVC)堆转储处理打开对象引用图要花费很长时间
   1.7 泄漏分析:Hyades 优化堆转储文件的定位和管理
   1.8 泄漏分析:泄漏分析日志文件
   1.9 泄漏分析:设置 RADLEAKJVMSIZE 以分析非常大的堆
   1.10 线程分析:死锁检测对 IBM JRE 1.4.2 不起作用
2.0 已知问题
   2.1 Probekit:不要在 Probekit 源文件名称中使用非 ASCII 字符
   2.2 Probekit:构建 Probekit 源文件
   2.3 Probekit:不要在 Probekit 目标规范中使用非 ASCII 字符
   2.4 方法和线级别覆盖:不要在“刷新方法”中使用非 ASCII 字符
   2.5 方法和线级别覆盖:EXCLUDE 过滤器一定不能以通配符开头
   2.6 泄漏分析:J9 JVM 创建的 IBM 堆转储不支持此功能
   2.7 泄漏分析:在导入堆文件时,必须指定新的项目或监视器
   2.8 线级别覆盖和 Probekit:必须重新启动项目以从已经装入的类中收集数据
   2.9 “控制台”视图不能显示双字节字符
   2.10 泄漏分析:使用 IBM JVM 对 applet 进行概要分析时崩溃
   2.11 泄漏分析:分析的语言环境与数据收集的语言环境应该相同
   2.12 线程分析:IBM JRE 1.4.1 或之前版本的锁定没有线程所有者
   2.13 在 Solaris 上进行远程概要分析时,Sun 的 JVM 可能会崩溃

概要分析和记录工具组件发行说明

1.0 局限性

1.1 如何在“概要分析和记录”透视图中打开“控制台”视图

在对应用程序进行概要分析时,缺省情况下,“控制台”视图不会出现在“概要分析和记录”透视图中。

要在“概要分析和记录”透视图中打开“控制台”视图,选择“窗口 -> 显示视图 -> 控制台”。

要使标准输出出现在控制台中,单击“窗口 -> 首选项 -> 运行/调试 -> 控制台”并选择在程序写至标准输出时显示

1.2 Probekit:考虑对 Probekit 源文件选择 UTF-8 编码

在创建新的 Probekit 源文件时,向导允许您选择要使用的 XML 编码。缺省选择为 ASCII。如果想要在探测源文件中的任何位置(例如,在“标注”或“描述”字段或片段的 Java 代码中)使用非 ASCII 字符,则必须选择 UTF-8 编码(而不是 ASCII)。

要更改现有探测源文件的编码,右键单击该文件并选择“打开方式 -> 文本编辑器”。将 XML 标题中的编码更改为“UTF-8”,然后保存并关闭该文件。右键单击并选择“打开方式 -> 探测编辑器”以编辑内容。

1.3 泄漏分析:泄漏分析在 OS/400 iSeries(TM) 上不可用

对于在 OS/400® iSeries(TM) 上运行的用户程序,泄漏分析功能部件不可用。在此平台上生成的 Hyades 优化堆转储是不完整的,并且不能生成任何其它格式的堆转储。

1.4 对应用程序进行概要分析的技巧

概要分析工具的性能与要收集的数据量及将这些数据传送至工作台的速率有直接关系。要收集的数据量增加时,用户会发现性能下降的情况,这体现在执行分析所花的时间以及可供执行不同任务的内存两个方面。用户可使用一些方法来提高概要分析性能。

1.5 泄漏分析:“将概要分析数据发送至文件”时的意外行为

在收集二进制 Hyades 优化堆转储时,如果通过选择“将概要分析数据发送至文件”来将数据发送至 trcxml 文件,请注意以下各项:

必须在部署主机上运行代理控制器才能访问存储在该主机上的堆文件。第一次对 trcxml 文件运行“导入 -> 概要分析文件”时,泄漏分析和查看对象引用图将如期工作。

如果第二次运行“导入 -> 概要分析文件”,导入会起作用,但尝试运行泄漏分析或查看对象引用图可能会失败。这是因为所需的堆文件在部署主机上不再可用。

如果遇到此问题,请从第一次导入 trcxml 文件的项目中访问这些堆文件。堆文件在项目目录下名为“leakanalysisheapdir”的目录中。

1.6 泄漏分析:对 IBM(C) OS/390 (SVC) 堆转储处理打开对象引用图花费了很长时间

IBM(C)OS/390(SVC) 堆转储非常大。展开大型堆转储以便在“对象引用图”视图中查看它们可能会花很长时间。因此,该操作看起来已经挂起。工作台可能仍然积极展开堆转储,即使进度监视器显示为固定在 100% 的位置。

1.7 泄漏分析:Hyades 优化堆转储文件的定位和管理

执行“捕获堆转储”操作会在部署目标应用程序的主机上生成 Hyades 优化堆转储。堆转储目标目录是由代理控制器的配置文件 serviceconfig.xml 中的 LOCAL_AGENT_TEMP_DIR 的设置控制的。有关定位和修改此文件的信息,请参阅“检测和分析运行时问题”中的“管理代理控制器”帮助主题。

如果遇到下列任一错误消息:“展开堆转储在执行读取文件步骤时失败”或“泄漏分析在执行创建堆对象引用图步骤时失败”,请验证代理控制器是否在部署主机上运行并重试命令。代理控制器帮助将文件从部署主机复制至工作台项目目录。

1.8 泄漏分析:泄漏分析日志文件

如果在泄漏分析期间遇到问题,您会发现泄漏分析日志文件非常有用。

在泄漏分析期间,诊断信息将写至 LeakAnalysis.log 文件。LeakAnalysis.log 包含在泄漏分析期间执行的各种步骤的输出,并且指示运行的泄漏分析的成功或失败。

LeakAnalysis.log 将写至与概要分析数据相关联的概要分析项目。例如,在 Windows 上,将写至 <my_workspace>\ProfileProject\LeakAnalysis.log。

可使用 RADLEAKREGIONDUMP 系统属性将附加信息写至日志文件。将此选项添加至 rationalsdp.ini:

VMArgs=-DRADLEAKREGIONDUMP=1

rationalsdp.ini 文件可在 Rational Software Architect 安装目录中找到。

1.9 泄漏分析:设置 RADLEAKJVMSIZE 以分析非常大的堆

如果泄漏分析失败并且在 LeakAnalysis.log 文件中显示以下消息:“JVMDUMP006I 处理转储事件“未捕获”,详细信息:java/lang/OutOfMemoryError”,则必须增加泄漏分析进程的堆大小。

要这样做,请设置 Rational Software Architect 系统属性 RADLEAKJVMSIZE。此属性控制泄漏分析期间可用的 JVM 堆大小。

要设置 RADLEAKJVMSIZE,将此选项添加至 rationalsdp.ini 文件:

VMArgs=-DRADLEAKJVMSIZE=value

其中 value 是新堆大小限制,如 1024M。缺省值为 512M。必须指示堆大小是用兆字节(M)还是吉字节(G)表示。

rationalsdp.ini 文件可在 Rational Software Architect 安装目录中找到。

1.10 线程分析:死锁检测对 IBM JRE 1.4.2 不起作用

将 IBM 经典版 JVM 与线程分析概要分析功能部件配合使用时,“概要分析和记录”透视图的线程视图不会对死锁中隐含的全部线程显示“等待锁定”状态。这是因为收集的数据中缺少信息。变通方法:通过在“概要分析”对话框的“自变量”选项卡的 VM 自变量字段中添加 -Xj9 来使用 IBM J9 JVM。

2.0 已知问题

2.1 Probekit:不要在 Probekit 源文件名称中使用非 ASCII 字符

名称中包含非 ASCII 字符的 Probekit 源文件得不到正确处理。在 Probekit 源文件名称中只能使用 ASCII 字符。

2.2 Probekit:构建 Probekit 源文件

不要对 *.probe 文件使用上下文菜单中出现的“Probekit -> 编译”操作。而是将包含 *.probe 文件的项目转换为 Probekit 项目,然后使用标准构建机制。(要将 Java 项目转换为 Probekit 项目,使用“文件 -> 新建 ->其它”并从“概要分析和记录”一节中选择将 Java 项目转换为 Probekit 项目)。

2.3 Probekit:不要在 Probekit 目标规范中使用非 ASCII 字符

不要在 Probekit 的“目标”规范的模式中使用非 ASCII 字符。目标模式中包含非 ASCII 字符的探测器得不到正确处理。

2.4 方法和线级别覆盖:不要在“刷新方法”中使用非 ASCII 字符

在对“当…时刷新覆盖数据”添加方法模式时不要使用非 ASCII 字符。

如果在“添加方法模式”对话框的包、类或方法字段中输入非 ASCII 字符,将显示无效输入错误,并且您将无法关闭该对话框。

变通方法:使用通配符(星号)代替模式中的非 ASCII 字符。

2.5 方法和线级别覆盖:EXCLUDE 过滤器一定不能以通配符开头

以通配符(星号)开头的 EXCLUDE 过滤器(如“*foo”)将导致覆盖统计信息、“覆盖导航器”和“注释源代码”视图不显示任何数据。变通方法:不要使用这种 EXCLUDE 过滤器。

2.6 泄漏分析:J9 JVM 创建的 IBM 堆转储不支持此功能

对于运行 IBM J9 JVM 的用户程序,泄漏分析功能不可用。

在设置环境变量 IBM_HEAPDUMP 并向正在运行的 Java 进程发送“kill -3”信号时,IBM J9 JVM 创建的堆文件的名称将类似 heapdump.20041012.093936.2192.dmp。这些 .dmp 文件需要通过运行 j9extract 和 jdmpview 进行后处理并创建 IBM 堆转储。

这些堆转储的格式与经典 IBM JVM 生成的堆转储的格式不相同。

2.7 泄漏分析:在导入堆文件时,必须指定新的项目或监视器

如果将具有同一监视器名称的多组堆转储导入到现有项目中,可能会在稍后保存项目或退出工作台时丢失数据。

为避免出现这种情况,请对导入的每一组堆指定唯一的项目/监视器组合。

2.8 线级别覆盖和 Probekit:必须重新启动项目以从已经装入的类中收集数据

如果启动 WAS 服务器并连接至该服务器,Probekit 和线级别覆盖概要分析类型不会对已经装入在目标 JVM 中的任何类收集数据。变通方法:要收集这些类中的数据,重新启动包含这些类的项目。

2.9 “控制台”视图不能显示双字节字符

在概要分析期间,所有双字节字符在“控制台”视图中显示为 ????。

2.10 泄漏分析:使用 IBM JVM 对 applet 进行概要分析时崩溃

使用 IBM 1.4.2 SR1 JVM 对 applet 进行概要分析以进行泄漏分析将导致 JVM 崩溃。请在应用程序的 VM 实参中指定 -Xj9 以变通此问题。

2.11 泄漏分析:分析的语言环境与数据收集的语言环境应该相同

在收集 Hyades 优化堆转储时,工作台主机、远程部署主机和目标应用程序上的语言环境设置必须全部相同。

2.12 线程分析:IBM JRE 1.4.1 或之前版本的锁定没有线程所有者

在使用 IBM JVM 1.4.1 或之前版本对线程分析进行概要分析时,“概要分析和记录”透视图中的线程视图不会显示锁定监视器的线程所有者,这是因为未收集此数据。变通方法:升级至 IBM JRE 1.4.2。

2.13 在 Solaris 上进行远程概要分析时,Sun 的 JVM 可能会崩溃

在 Solaris 上进行远程概要分析时,Sun 1.4.x JRE 中的缺陷导致无法对某些功能部件组合执行概要分析,特别是在启用了内存概要分析或线程分析的情况下。Sun 的站点描述了这一问题,网址如下:http://developer.java.sun.com/developer/bugParade/bugs/4614956.html 变通方法:使用 Sun JRE 1.4.2_06 或更高版本。

返回到主自述文件