权威支持: Memory Analyzer(及其 IBM Extensions 插件)为何不再只用于内存泄露

IBM® Monitoring and Diagnostics for Java™ - Memory Analyzer 是一个功能强大的工具,用于从一个 Java 进程(比如 IBM WebSphere® Application Server)的转储诊断内存泄露和内存足迹问题。它还支持深入洞察 Java 代码,仅从一个转储调试一些复杂问题,无需插入诊断代码或重启进程。本文展示如何结合使用 Memory Analyzer 和新的 IBM Extensions for Memory Analyzer 插件,检查 WebSphere Application Server 和您的应用程序的状态。 本文来自于 IBM WebSphere Developer Technical Journal 中文版

Chris Bailey, 顾问软件工程师, IBM

Chris BaileyChris Bailey 是位于英国的 Hursley Park Development Lab 的 IBM Java Technology Center 团队成员。作为 IBM Java 服务和支持组织的技术架构师,他负责支持 IBM SDK for Java 用户交付成功的应用程序部署。Chris 还参与收集和评估新需求,交付新调试功能和工具,改进文档并提高 IBM SDK for Java 的质量。



Kevin Grigorenko, WebSphere Application Server SWAT Team, IBM

作者照片Kevin Grigorenko 是 WebSphere Application Server SWAT 团队的一名软件工程师,该团队在世界范围内提供现场和远程产品缺陷补充支持,尤其是在关键客户支持场景中提供支持。他主要关注 WebSphere Application Server 以及相关堆栈产品和操作系统的问题确定,包括 IBM 和 Oracle JVMs、AIX、Linux、Solaris、Windows、z/OS、HP/UX 和 i5/OS。



Chris Bailey, Java 支持架构师, IBM

Chris BaileyChris Bailey 是位于英国的 Hursley Park Development Lab 的 IBM Java Technology Center 团队成员。作为 IBM Java 服务和支持组织的技术架构师,他负责支持 IBM SDK for Java 用户交付成功的应用程序部署。Chris 还参与收集和评估新需求,交付新调试功能和工具,改进文档并提高 IBM SDK for Java 的质量。



2011 年 5 月 19 日

在每个专栏中,支持权威将讨论 IBM® Technical Support 的可用于 WebSphere ® 产品的资源、工具和其他元素,以及一些可以进一步增强您的 IBM 支持体验的技术和新思想。

最新快报

按照惯例,我们将首先提供关于整个 WebSphere 社区的一些重要新闻:

  • 您准备好参加 Impact 2011 了吗?加入 Impact 2011:2010 年 4 月 10-15,内华达州拉斯维加斯,The Venetian and The Palazzo Hotels。阅读 参加 Impact 的 5 个最大理由(PDF,115KB),体验这个商界领袖和 IT 领袖齐聚一堂、探讨如何实现更大的业务灵活性的会议。
  • 查阅 IBM Conferences and Events 页面,获取即将举行的会议列表。
  • 在 developerWorks 上的 IBM Electronic Support Community 博客 学习、共享并联网。
  • websphereusergroup.org 查看新的 Global WebSphere Community (GWC)。定制您的个人 GWC 页面上的内容,连接与您志趣相投的其他 “WebSphere 人”。GWC 还提供一个 免费 IBM WebSphere CloudBurst™ Appliance 培训课程。学习如何配置云中托管的资源,创建部署到云的虚拟系统,管理部署到云的资源,创建一个多映像模式,管理多台动态机器。
  • WebSphere Technical Exchange 将在未来几个月安排一些令人兴奋的网络广播。请查看此站点了解详细信息,也可以通过 Facebook 成为一名粉丝!
  • IBM Support Assistant 4.1.2 现在已可用。 IBM Support Assistant 4.1.2 提供了几个缺陷修复程序和它的快速数据收集工具 ISA Lite 的一个新版本。ISA Lite 中现在可用的新特性包括:
    • 可以在浏览器中轻松查看 ISA Lite 中收集的库存。
    • 利用 Ant 1.8。
    • 已编号的菜单选项。
    • 可以在多个不同的场景中暂停一个响应文件的处理。
    • ISA Lite 现在拥有一种更灵活的可扩展格式(对响应文件使用 “名称-值” 对),它支持:在响应文件中添加注释;响应文件包含涵盖所有相关问题的 “名称-值” 对;针对系统定制轻松编辑响应文件。
    • 版本信息在启动时自动写入控制台和日志。
    • 一个 -help 选项用于查看关于如何使用工具的信息。
    • 替代文件传输选项。
    • 一个可视指示符显示收集是否成功完成。
    • 一个 -useHome 选项用于阻止文件写入 ISA Lite 安装目录。
    • 对 Windows® 7 和 64 位 Linux® RedHat 的支持。
    • 为 Solaris 添加了库存收集支持。

继续关注 与支持相关的各个网站 以及本专栏,了解我们所遇到的其他工具的相关新闻。

现在,让我们言归正传......


从转储进行调试

在一篇关于 从转储进行调试 的 IBM developerWorks 配套文章中,我们介绍了这样一个概念:使用 IBM Monitoring and Diagnostics for Java - Memory Analyzer 工具(以下简称 Memory Analyzer),结合来自一个基于 HotSpot 的 Java 运行时(Solaris™ 和 HP-UX)的 HPROF 二进制转储或来自一个 IBM Java 运行时的系统转储,来调试问题而非内存泄露。那篇文章介绍了使用那些转储类型(而不是 IBM Portable Heap Dump)的重要性,如何获取转储,以及如何使用转储诊断几种问题类型,包括足迹和内存效率问题、类加载器层级问题、线程数据使用情况、以及异常分析。

本文介绍如何在 IBM WebSphere Application Server 中生成并启用 HPROF 和 IBM 系统转储,如何使用 Memory Analyzer 和新近可用的 IBM Extensions for Memory Analyzer 插件帮助理解您的 WebSphere Application Server 环境的状态并诊断一些 WebSphere Application Server 特有问题。


在 WebSphere Application Server 中生成转储

要利用 Memory Analyzer 的全部威力,重要的是生成 HPROF 格式转储(如果使用基于 HotSpot 的 Java 运行时)或 IBM 系统转储(如果使用基于 IBM 的 Java 运行时)。这是因为那些转储格式包含一些额外数据,那些数据存储在堆上的 Java 对象中,对于诊断内存泄露之外的问题和创建应用程序状态报告很重要。

尽管 HPROF 和 IBM 系统转储格式包含重要的额外数据,但它们的代价是需要额外的磁盘空间。两种系统转储类型都大于它们表示的 Java 堆的大小,IBM 系统转储等于 Java 进程的总内存大小。这意味着,确保有足够的磁盘空间、防止转储被截断很重要。默认情况下,转储被写入 Java 进程的当前工作目录。在 WebSphere Application Server 中,这是服务器的配置文件目录的路径;例如,WebSphere_Application_Server_Install_Path/profiles/node1。对于 IBM Java 运行时,可以使用 -Xdump 文件命令行选项更改这个位置。对于 HotSpot Java 运行时,使用的是 -XX:HeapDumpPath 命令行选项。

生成系统转储时,还有一点很重要:确保设置了必要的操作系统级设置来支持写入完整的转储。在基于 UNIX® 的系统上,这意味着设置了正确的 ulimits。(参见 参考资料,了解如何从 AIX®、Linux®、z/OS® 和 Solaris 获取系统转储。)


从 HotSpot Java 运行时生成转储

基于 HotSpot 的 Java 运行时只生成 HPROF 格式转储,可以在 OutOfMemoryError 发生时生成,也可以使用下面几种交互式方法生成:

  • 交互式方法
    • 使用一个 Ctrl+Break:如果为正在运行的应用程序设置了 -XX:+HeapDumpOnCtrlBreak 命令行选项,那么当一个 Ctrl+Break 事件或 SIGQUIT(通常使用 kill -3 生成)通过控制台发送时,将生成一个 HPROF 格式转储和一个线程转储。有些版本上可能没有这个选项,如果遇到这种情况,可以尝试以下命令:

      -Xrunhprof:format=b,file=heapdump.hprof

    • 使用 jmap 工具:这个 JDK 的 bin 目录中提供了一个 jmap 实用工具(参见 参考资料),该工具提供一个选项来从正在运行的进程请求 HPROF 转储。对于 Java 5,使用下面的命令:

      jmap -dump:format=b pid

      对于 Java 6,使用下面的命令,其中,“live” 是可选选项,导致只将 “活动” 对象写入转储文件进程 ID(PID):

      jmap -dump[live,]format=b,file=filename pid

    • 使用操作系统:使用非破坏性的 gcore 命令或破坏性的 kill -6kill -11 命令来生成一个核心文件。然后,通过使用 jmap 指向核心转储,从核心文件提取一个堆转储:

      jmap -dump:format=b,file=heap.hprof path

    • 使用 JConsole 工具:JConsole 中的 HotSpotDiagnostic MBean 下方提供了一个 dumpHeap 操作。这个操作请求生成一个 HPROF 堆。
  • 基于事件的方法

    如果为正在运行的应用程序设置了 -XX:+HeapDumpOnCtrlBreak 命令行选项,那么当 OutOfMemoryError 发生时,将生成一个 HPROF 格式转储。这种方法对于生产系统很理想,因为生产系统几乎总是需要诊断内存问题,并且这不会引发任何实时性能开销。这对于每次 JVM 运行时这个事件上生成的堆转储的数量没有限制;在一些较新的发布中,每次 JVM 运行时这个事件上生成的堆转储数量限制为 1。

为您生产中的任何 WebSphere Application Server 部署设置 -XX:+HeapDumpOnOutOfMemoryError 命令行选项是一个好主意。


从 WebSphere Application Server 生成转储

IBM Java 运行时提供一些转储和跟踪引擎,可用于在大量交互式和基于事件的场景中生成 PHD 格式转储或系统转储。也可以使用 Health Center 工具或使用一个 Java API 以编程方式生成交互式转储:

  • 交互式方法
    • 使用一个 SIGQUIT 或 Ctrl+Break:当一个 Ctrl+Break 或 SIGQUIT(通常使用 kill -3生成)被发送到 IBM 运行时,一个用户事件将在 IBM 转储引擎中生成。默认情况下,这个事件只生成一个线程转储文件(javacore.txt)。您可以使用 -Xdump:heap:events=user 选项生成一个 PHD 格式转储,或使用 -Xdump:system:events=user 选项生成一个 Java 应用程序系统转储。
    • 使用操作系统生成一个系统转储:
      • AIX:gencore(或破坏性的 kill -6 or kill -11
      • Linux/Solaris:gcore(或破坏性的 kill -6 or kill -11
      • Windows:userdump.exe
      • z/OS:SVCDUMP 或控制台转储
    • 使用 IBM Monitoring and Diagnostics Tools for Java - Health Center:Health Center 工具提供一个菜单选项来从一个正在运行的 Java 进程请求一个 PHD 转储或系统转储(参见 参考资料)。
    • 使用 wsadmin 脚本客户端:下面的命令使用 Jython 和 -lang jython 选项(参见 参考资料 了解关于连接 wsadmin 并引用目标进程的细节):
      • 线程转储:

        AdminControl.invoke(AdminControl.completeObjectName("type=JVM,process=server1,*"), "dumpThreads")

      • 系统转储:

        AdminControl.invoke(AdminControl.completeObjectName("type=JVM,process=server1,*"), "generateSystemDump")

      • 可移植堆转储(PHD):

        AdminControl.invoke(AdminControl.completeObjectName("type=JVM,process=server1,*"), "generateHeapDump")

        单个 JVM 运行达到 10 个堆转储后,此命令将抛出 HeapDumpOnDiskLimitReachedException(这只适用这个 JMX 命令)。使用下面的命令提高这个限制(这个设置在重启后将失效):

        AdminControl.invoke(AdminControl.completeObjectName("type=JVM,process=server1,*"), "setMaxDumpsOnDisk", "20")

  • 基于事件的方法

    IBM 转储和跟踪引擎提供一个灵活的功能集,在大量事件上生成 PHD 和系统转储,比如正在抛出的异常和正在执行的方法。使用这些功能,应该能够为您想要诊断的大多数问题场景生成转储:

    • 使用 IBM 转储引擎:这个转储引擎提供许多事件,可以在那些事件上生成 PHD 或系统转储;这个引擎还允许过滤那些事件的类型,对何时生成转储提供细粒度控制。这是 OutOfMemoryError 上最常用的设置(在应用程序服务器的泛型 JVM 参数中设置):

      -Xdump:heap:none -Xdump:java+system:events=systhrow,filter=java/lang/OutOfMemoryError,range=1..4,request=exclusive+compact+prepwalk

      当 OutOfMemoryError 发生时,这个命令生成一个 IBM 系统转储(和一个线程转储)而不是可移植堆转储。应该为所有生产 WebSphere Application Server 部署设置下面的 -Xdump 命令行选项:

      -Xdump:heap:none -Xdump:java+system:events=systhrow,filter=java/lang/OutOfMemoryError,range=1..4,request=exclusive+compact+prepwalk


IBM 转储的后处理要求

IBM 系统转储必须通过 JDK 附带的 jextract 工具进行后处理:

WebSphere_Application_Server_Install_Path/java/jre/bin/jextract core

理想情况下,jextract 在生成转储的物理机器上运行,从生成转储的 JDK 安装使用,并能对 Java 进程运行使用的库进行读访问。鉴于 jextract 在处理转储时可能会消耗大量 CPU 周期,理想情况在一些生产系统中可能难以接受。在生产系统中,转储应该在最匹配的机器上处理,比如预生产测试系统。Java 运行时的服务刷新(SR)版本和补丁(FP)版本应该适合。

jextract 工具生成一个 ZIP 文件,其中包含原始核心转储、一个经过处理的转储表示、Java 可执行文件、以及 Java 进程使用的库。您可以删除原始核心转储,因为它存在于这个 ZIP 文件中。这个 ZIP 文件应该加载到 Memory Analyzer 工具中。


在 WebSphere Application Server 管理控制台中设置 Java 命令行选项

可以使用进程定义的 Java Virtual Machine 面板中的 泛型 JVM 参数选项 设置 Java 命令行选项。要找到 Java Virtual Machine 面板:

  1. 导航到管理控制台并选择左侧面板中的 Servers > Server Types > WebSphere application servers
  2. 从主面板选择您的应用程序服务器(见图 1)。
    图 1. 选择应用程序服务器
    图 1. 选择应用程序服务器
  3. 展开主面板右侧的 Java and Process Management 选项并选择 Process definition(见图 2)。
    图 2. 选择 Process definition
    图 2. 选择 Process definition
  4. 选择右侧的 Java Virtual Machine 选项(见图 3)。
    图 3. 选择 Java Virtual Machine
    图 3. 选择 Java Virtual Machine
  5. 主面板底部显示 Generic JVM arguments 文本框。

添加选项后,需要保存并同步更改,然后重启应用程序服务器使更改生效。


安装 Memory Analyzer 和 IBM Extensions

Memory Analyzer 被安装到 IBM Support Assistant 中。可以使用 IBM Support Assistant 或 Eclipse Memory Analyzer Tool (MAT) 中的更新程序功能安装 IBM Extensions for Memory Analyzer(以下简称 IBM Extensions)。请参阅 IBM Monitoring and Diagnostic Tools for Java - Memory AnalyzerIBM Support Assistant 和开源 Eclipse Memory Analyzer Tool 的文档了解这些工具的安装说明。一般安装步骤总结如下:

  1. 安装然后打开 IBM Support Assistant。
  2. 选择 Update > Find New... > Tools Add-ons
  3. 展开 JVM-based Tools 部分。
  4. 选择插件 IBM Monitoring and Diagnostic Tools for Java – Memory Analyzer [Tech Preview]
  5. 安装 Memory Analyzer 之后,重启 IBM Support Assistant。
  6. 要启动 Memory Analyzer,单击 Analyze Problem,然后单击 IBM Monitoring and Diagnostic Tools for Java - Memory Analyzer [Tech Preview],最后单击 Launch 按钮。

IBM Extensions 是一个插件集,同时适用于 IBM Support Assistant 中的 Memory Analyzer 工具和 Eclipse MAT。这些扩展中包含一般 Java 应用程序和特定 IBM 软件产品的知识,以向那些产品提供额外的调试功能。IBM Extensions 目前提供以下产品的扩展:

  • Java SE 运行时
  • WebSphere Application Server
  • IBM WebSphere eXtreme Scale
  • IBM CICS® Transaction Gateway

下面的步骤总结了如何将 IBM Extensions 安装到 IBM Support Assistant 中;针对 MAT 的安装流程非常相似:

  1. 从 IBM Support Assistant 菜单,选择 File > Preferences
  2. 选择 Updater Preferences
  3. 选中 Automatically include this location when searching for new or updated plug-ins
  4. 选择 Use this specified update site in addition to the IBM Support Assistant update site
  5. 从下拉列表框选择 http,输入地址:http://dl.alphaworks.ibm.com/ettktechnologies/updates
  6. 现在,您已经允许 IBM Support Assistant 在搜索新工具和更新时搜索 IBM Extensions for Memory Analyzer 升级站点。要请求 IBM Support Assistant 搜索新工具,从 IBM Support Assistant 中的菜单选择 Update > Find New... > Tools Add-ons
  7. 展开 JVM-based Tools 部分。
  8. 选择名称前面部分为 “IBM Extensions for Memory Analyzer - ” 的插件。IBM Extensions for Memory Analyzer - Utilities (required) 插件必须安装。其他插件都是可选的,具体取决于您想要哪个产品的插件。
  9. 接受许可条款并单击 Finish
  10. 重新启动 IBM Support Assistant 工作台后,新插件应该已安装好,可以在 Memory Analyzer 中使用。

在 Memory Analyzer 中使用 IBM Extensions

“总是启动” 的扩展

有些 IBM 扩展 “总是启动”,即各种视图显示关于一个与其地址相邻的对象的额外信息。例如,在图 4 显示的用例中,选中的对象现在描述 MemoryStore 中有多少会话,以及那些会话针对哪些 web 应用程序。IBM Extensions 添加会话的数量和应用程序名称,以便立即描述内存使用的起源。

图 4. Memory Analyzer 的 Overview 选项卡显示一个大对象
图 4. Memory Analyzer 的 Overview 选项卡显示一个大对象

在 Dominator 树视图(共同保留整个 Java 堆的一列对象),类加载器分组使用它加载的类的描述替代类加载器的名称。例如,图 5 中选中的类加载器显示它是 PlantsByWebSphere web 应用程序的类加载器。

图 5. 按照 IBM 产品扩展的类加载器分组的 Dominator Tree
图 5. 按照 IBM 产品扩展的类加载器分组的 Dominator Tree

下拉菜单扩展

有几个 IBM 扩展是可执行查询,可以在 Query Browser 下拉菜单中找到。IBM Extensions 位于 IBM Extensions 类别下,细分为 3 个子类别:Java SE Runtime、CICS Transaction Gateway 和 WebSphere Application Server(见图 6)。

图 6. Open Query Browser Button 展开一个通往 IBM 产品扩展查询的上下文菜单
图 6. Open Query Browser Button 展开一个通往 IBM 产品扩展查询的上下文菜单

目前可用以下查询:

  • Java SE 运行时
    • Java Overview 提供一个 Java 运行时和流程摘要,包括供应商、版本、操作系统、Java 主目录、类路径和命令行。
    • DirectByteBuffers 生成两个报告:一个摘要,包含 DirectByteBuffer 实例的数量、它们的关联内存以及它们的服务对象;一个表,包含每个单独的 DirectByteBuffer 实例。
    • List All Objects 生成堆上的每个 Java 对象的列表,最初按照各个对象的大小排序。
    • List All GC Roots 生成所有垃圾收集根的列表,并列示从 Java 堆外部(比如线程或 JNI 代码等区域)引用的对象,这些对象充当垃圾收集确定哪些 Java 对象仍然被 Java 应用程序使用的出发点。
    • Export Object 支持将一个对象图作为文本表示写入一个文本文件。
    • Calculate Naive Retained Heap Size 计算一个指定对象保留(或引用)的所有对象,忽略其中有些对象可能还别应用程序的其他部分引用这个事实。
  • CICS Transaction Gateway
    • Overview 提供一个 CICS Transaction Gateway 基本概览,包括版本和构建信息、正在使用的配置、以及所有环境变量集的列表。
    • Active Conversations 提供 CICS Transaction Gateway 中的所有活动 IPIC 对话、它们当前拥有的会话及其状态。
    • Requests 提供 CICS Transaction Gateway 中已经处理或正在处理的 ECI 请求对象。
    • Statistics 提供 CICS Transaction Gateway 记录的统计数据的一个选择。
  • WebSphere Application Server
    • WAS Overview 提供一个 WebSphere Application Server 运行时摘要,包括产品和版本、服务器名称、节点、单元以及已部署应用程序的状态。
    • WAS Cache Analysis 提供应用程序服务器提供的缓存的摘要,显示它们的大小、占用率以及保留的内存。
    • Web Container Analysis 提供已部署 web 应用程序的细目、它们的地址、以及与它们关联的 HTTP 会话的数量。
    • Thread Pool Analysis 提供应用程序服务器提供的线程池的表,其中包括:线程池配置、挂起线程的存在性和当前大小;还提供一个 Java 级线程组表,包括线程计数和关联内存量。
    • HTTP Sessions 生成内存中的每个 HTTP 会话的列表,总结应用程序名称、会话 ID、用户名、超时、以及创建时间和最好访问时间。另外,可以扩展任何 HTTP 会话,查看与会话本身关联的键和值。
    • EJB Container 提供应用程序服务器中部署的每种 EJB 类型的数量的一个简单细目。
    • Application Class Loader Leaks 列示所有应用程序类加载器,表明它们是否被停止,因此导致泄漏。可以使用这个查询来确定哪个应用程序有问题。
    • Alarm Manager 提供可延迟、不可延迟、已延迟以及未排队的警报的列表。
  • WebSphere eXtreme Scale
    • Priority Queue Runnables 发现 APAR PM30264 中描述的问题。

扩展实际应用

WAS Overview 查询

WAS Overview 查询是一个简单查询,显示当前运行的 WebSphere Application Server 的版本和补丁级别,服务器、节点和单元名称,推断的进程启动时间,以及所有应用程序及其运行状态的列表(见图 7)。这个查询可以通过导航到 Open Query Browser > IBM Extensions > WebSphere Application Server > WAS Overview 来访问。

图 7. WebSphere Application Server Overview 查询
图 7. WebSphere Application Server Overview 查询

HTTP Sessions 查询

一类常见问题与应用程序的 HTTP 会话使用相关。除 OutOfMemoryErrors 外,其他问题包括发现会话内容、超时值、会话标识符以及会话所属的应用程序。还有许多实现细节使得发现会话及其值并不容易。这些细节包括不同的产品版本的类名不同,一个会话有两个映射(一个映射用于持久会话,另一个映射用于非持久会话,这两个映射可能在单个会话中同时保持活动状态)。

HTTP Sessions 查询将所有这些信息都提取到一个树视图中(见图 8)。这个查询可以通过 Open Query Browser > IBM Extensions > WebSphere Application Server > HTTP Sessions 访问。图 8 中加点的行下面的列是上面的列的继续。

图 8. WebSphere Application Server HTTP Sessions 查询
图 8. WebSphere Application Server HTTP Sessions 查询

每个会话对象都可以扩展,显示其 “键/值” 对。在图 9 中,会话中有 5 个属性。每个键都采用 sessN 形式,值是一个自定义对象。如果值不是 String,则可以展开行显示对象。

图 9. 带有一个已展开会话及其属性的 WebSphere Application Server HTTP Sessions 查询
图 9. 带有一个已展开会话及其属性的 WebSphere Application Server HTTP Sessions 查询

这个插件还可用于 PHD 堆转储,但大多数元数据都会缺失,只显示属性的保留堆大小。

Application Class Loader Leaks 查询

当应用程序重启但它们的类加载器没有清理时,将发生应用程序类加载器泄露。这种情况通常由一个应用程序引用引起,该引用从服务器中的其他地方(比如 ThreadLocals)引用应用程序。如果存在应用程序类加载泄露且应用程序重启次数达到一定数量,就可能会导致 Java 或原生 OutOfMemoryErrors。

Application ClassLoader Leaks 查询将找到所有停止的应用程序类加载器,询问可能导致类加载器不适合垃圾收集的可疑对象。这个插件处理 PHD 堆转储的效果同样好(见图 10)。可以通过 Open Query Browser > IBM Extensions > WebSphere Application Server > Application ClassLoader Leaks 访问此插件。

图 19. WebSphere Application Server Application ClassLoader Leaks 查询
图 19. WebSphere Application Server Application ClassLoader Leaks 查询

结束语

Memory Analyzer 和 IBM Extensions for Memory Analyzer 允许您深入洞察 WebSphere Application Server 及其相关产品的内部运行情况。我们建议您尝试本文介绍的技术和插件,特别是对 IBM 运行时使用系统转储而非 PHD 转储。参与 alphaWorks 论坛,告知我们您希望通过系统转储了解什么其他信息。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=659767
ArticleTitle=权威支持: Memory Analyzer(及其 IBM Extensions 插件)为何不再只用于内存泄露
publish-date=05192011