在对应用程序进行概要分析时,缺省情况下,“控制台”视图不会出现在“概要分析和记录”透视图中。
要在“概要分析和记录”透视图中打开“控制台”视图,选择“窗口 -> 显示视图 -> 控制台”。
要使标准输出出现在控制台中,单击“窗口 -> 首选项 -> 运行/调试 -> 控制台”并选择在程序写至标准输出时显示。
在创建新的 Probekit 源文件时,向导允许您选择要使用的 XML 编码。缺省选择为 ASCII。如果想要在探测源文件中的任何位置(例如,在“标注”或“描述”字段或片段的 Java 代码中)使用非 ASCII 字符,则必须选择 UTF-8 编码(而不是 ASCII)。
要更改现有探测源文件的编码,右键单击该文件并选择“打开方式 -> 文本编辑器”。将 XML 标题中的编码更改为“UTF-8”,然后保存并关闭该文件。右键单击并选择“打开方式 -> 探测编辑器”以编辑内容。
对于在 OS/400® iSeries(TM) 上运行的用户程序,泄漏分析功能部件不可用。在此平台上生成的 Hyades 优化堆转储是不完整的,并且不能生成任何其它格式的堆转储。
概要分析工具的性能与要收集的数据量及将这些数据传送至工作台的速率有直接关系。要收集的数据量增加时,用户会发现性能下降的情况,这体现在执行分析所花的时间以及可供执行不同任务的内存两个方面。用户可使用一些方法来提高概要分析性能。
- 最好只收集您认为足以对指定功能进行概要分析的最小量的数据。可通过在概要分析启动配置中设置较有效的过滤器来完成。在“运行 -> 概要分析”对话框中,选择“概要分析”选项卡。选择概要分析集合,然后按“编辑”按钮,然后按“下一步 >”,将出现“过滤器”对话框。使用过滤器进行过滤以便仅包括需要的内容。您可以一直更改过滤器以便在下一次运行时包括不同数据或更多数据。
- 如果不想对启动代码进行概要分析,尝试在“运行 -> 概要分析”对话框的“概要分析 - 限制”选项卡中取消选择“自动开始对已启动应用程序进行监视”复选框。这会帮助缩短启动要分析的程序的时间,而且可以省略要进行概要分析的启动代码。注意,要启动概要分析,需要在工作空间出现后在“概要分析监视器”中单击“开始监视”工具栏按钮。
- 可尝试将输出重定向至某个文件。这将使用 RAD 中的很少内存。以后想查看此概要分析文件的时候可将该文件导入到 RAD 中,这样便有更多的内存可以用于执行该任务。在进行概要分析之前,可以通过“运行 -> 概要分析”对话框完成此操作:选择“概要分析”选项卡和“目标”子选项卡,然后选择“将概要分析数据发送至文件”。以后使用“文件 -> 导入”对话框,并选择“概要分析文件”类型。注意,如果选择此选项,则不能在进行概要分析时查看数据。必须先导入才能查看它。可以在“导入”对话框中只导入概要分析文件的一部分,以便进一步降低内存用量。导入不同的部分并独立对它们进行检查可能会有所帮助。
- 概要分析可能导致大量内存开销,所以增加 RAD 使用的虚拟内存可能会有帮助。要以 512MB 的虚拟内存(最大 1GB)启动 RAD,请将下面一行添加至 rationalsdp.ini 文件:VMArgs=-Xms512m -Xmx1024m
- 如果在目标系统上收集数据期间遇到问题,可尝试增加用于将数据发送至 RAD 的缓冲区的大小。将下面一行添加至 serviceconfig.xml 并重新启动代理程序。(这会将缓冲区大小增加至 256MB)。在非常消耗 CPU 的应用程序中,进一步增加数据通道大小也会有帮助:<Agent configuration="default" name="Java Profiling Agent" dataChannelSize="256M" type="profiler"/>
在收集二进制 Hyades 优化堆转储时,如果通过选择“将概要分析数据发送至文件”来将数据发送至 trcxml 文件,请注意以下各项:
必须在部署主机上运行代理控制器才能访问存储在该主机上的堆文件。第一次对 trcxml 文件运行“导入 -> 概要分析文件”时,泄漏分析和查看对象引用图将如期工作。
如果第二次运行“导入 -> 概要分析文件”,导入会起作用,但尝试运行泄漏分析或查看对象引用图可能会失败。这是因为所需的堆文件在部署主机上不再可用。
如果遇到此问题,请从第一次导入 trcxml 文件的项目中访问这些堆文件。堆文件在项目目录下名为“leakanalysisheapdir”的目录中。
IBM(C)OS/390(SVC) 堆转储非常大。展开大型堆转储以便在“对象引用图”视图中查看它们可能会花很长时间。因此,该操作看起来已经挂起。工作台可能仍然积极展开堆转储,即使进度监视器显示为固定在 100% 的位置。
执行“捕获堆转储”操作会在部署目标应用程序的主机上生成 Hyades 优化堆转储。堆转储目标目录是由代理控制器的配置文件 serviceconfig.xml 中的 LOCAL_AGENT_TEMP_DIR 的设置控制的。有关定位和修改此文件的信息,请参阅“检测和分析运行时问题”中的“管理代理控制器”帮助主题。
如果遇到下列任一错误消息:“展开堆转储在执行读取文件步骤时失败”或“泄漏分析在执行创建堆对象引用图步骤时失败”,请验证代理控制器是否在部署主机上运行并重试命令。代理控制器帮助将文件从部署主机复制至工作台项目目录。
如果在泄漏分析期间遇到问题,您会发现泄漏分析日志文件非常有用。
在泄漏分析期间,诊断信息将写至 LeakAnalysis.log 文件。LeakAnalysis.log 包含在泄漏分析期间执行的各种步骤的输出,并且指示运行的泄漏分析的成功或失败。
LeakAnalysis.log 将写至与概要分析数据相关联的概要分析项目。例如,在 Windows 上,将写至 <my_workspace>\ProfileProject\LeakAnalysis.log。
可使用 RADLEAKREGIONDUMP 系统属性将附加信息写至日志文件。将此选项添加至 rationalsdp.ini:
VMArgs=-DRADLEAKREGIONDUMP=1
rationalsdp.ini 文件可在 Rational Software Architect 安装目录中找到。
如果泄漏分析失败并且在 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 安装目录中找到。
将 IBM 经典版 JVM 与线程分析概要分析功能部件配合使用时,“概要分析和记录”透视图的线程视图不会对死锁中隐含的全部线程显示“等待锁定”状态。这是因为收集的数据中缺少信息。变通方法:通过在“概要分析”对话框的“自变量”选项卡的 VM 自变量字段中添加 -Xj9 来使用 IBM J9 JVM。
名称中包含非 ASCII 字符的 Probekit 源文件得不到正确处理。在 Probekit 源文件名称中只能使用 ASCII 字符。
不要对 *.probe 文件使用上下文菜单中出现的“Probekit -> 编译”操作。而是将包含 *.probe 文件的项目转换为 Probekit 项目,然后使用标准构建机制。(要将 Java 项目转换为 Probekit 项目,使用“文件 -> 新建 ->其它”并从“概要分析和记录”一节中选择将 Java 项目转换为 Probekit 项目)。
不要在 Probekit 的“目标”规范的模式中使用非 ASCII 字符。目标模式中包含非 ASCII 字符的探测器得不到正确处理。
在对“当…时刷新覆盖数据”添加方法模式时不要使用非 ASCII 字符。
如果在“添加方法模式”对话框的包、类或方法字段中输入非 ASCII 字符,将显示无效输入错误,并且您将无法关闭该对话框。
变通方法:使用通配符(星号)代替模式中的非 ASCII 字符。
以通配符(星号)开头的 EXCLUDE 过滤器(如“*foo”)将导致覆盖统计信息、“覆盖导航器”和“注释源代码”视图不显示任何数据。变通方法:不要使用这种 EXCLUDE 过滤器。
对于运行 IBM J9 JVM 的用户程序,泄漏分析功能不可用。
在设置环境变量 IBM_HEAPDUMP 并向正在运行的 Java 进程发送“kill -3”信号时,IBM J9 JVM 创建的堆文件的名称将类似 heapdump.20041012.093936.2192.dmp。这些 .dmp 文件需要通过运行 j9extract 和 jdmpview 进行后处理并创建 IBM 堆转储。
这些堆转储的格式与经典 IBM JVM 生成的堆转储的格式不相同。
如果将具有同一监视器名称的多组堆转储导入到现有项目中,可能会在稍后保存项目或退出工作台时丢失数据。
为避免出现这种情况,请对导入的每一组堆指定唯一的项目/监视器组合。
如果启动 WAS 服务器并连接至该服务器,Probekit 和线级别覆盖概要分析类型不会对已经装入在目标 JVM 中的任何类收集数据。变通方法:要收集这些类中的数据,重新启动包含这些类的项目。
在概要分析期间,所有双字节字符在“控制台”视图中显示为 ????。
使用 IBM 1.4.2 SR1 JVM 对 applet 进行概要分析以进行泄漏分析将导致 JVM 崩溃。请在应用程序的 VM 实参中指定 -Xj9 以变通此问题。
在收集 Hyades 优化堆转储时,工作台主机、远程部署主机和目标应用程序上的语言环境设置必须全部相同。
在使用 IBM JVM 1.4.1 或之前版本对线程分析进行概要分析时,“概要分析和记录”透视图中的线程视图不会显示锁定监视器的线程所有者,这是因为未收集此数据。变通方法:升级至 IBM JRE 1.4.2。
在 Solaris 上进行远程概要分析时,Sun 1.4.x JRE 中的缺陷导致无法对某些功能部件组合执行概要分析,特别是在启用了内存概要分析或线程分析的情况下。Sun 的站点描述了这一问题,网址如下:http://developer.java.sun.com/developer/bugParade/bugs/4614956.html 变通方法:使用 Sun JRE 1.4.2_06 或更高版本。