Board logo

标题: Memory Analyzer(及其 IBM Extensions 插件)为何不再只用于内存泄露(1)数据 [打印本页]

作者: look_w    时间: 2018-8-13 21:13     标题: Memory Analyzer(及其 IBM Extensions 插件)为何不再只用于内存泄露(1)数据

从转储进行调试在一篇关于  的 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 发生时生成,也可以使用下面几种交互式方法生成:
为您生产中的任何 WebSphere Application Server 部署设置 -XX:+HeapDumpOnOutOfMemoryError 命令行选项是一个好主意。
从 WebSphere Application Server 生成转储IBM Java 运行时提供一些转储和跟踪引擎,可用于在大量交互式和基于事件的场景中生成 PHD 格式转储或系统转储。也可以使用 Health Center 工具或使用一个 Java API 以编程方式生成交互式转储:





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0