Welcome 微信登录

首页 / 软件开发 / JAVA / IBM的Java诊断,第1部分

IBM的Java诊断,第1部分2011-11-02 IBM Helen Beeken介绍面向 Java 的 IBM 转储分析器(IBM Dump Analyzer)

简介:Java™ 应用程序已经变得越来越复杂;因此,对这些应用程序进行问题诊断变得不再轻 松,并且可能需要某个外部服务组织做大量的工作。若能够指明正确的方向将节省时间和费用。IBM Dump Analyzer for Java 工具可以对格式化的系统转储做基本分析并生成简明的报告,指导您如何进行下一步 操作。

Java 语言已经成为软件开发中的主导语言,因此, Java 虚拟机(VM)的稳定性成为一个 非常重要的问题。VM 通常是一种可靠的软件,但是出于各种原因在运行时还是会发生错误。这些问题中 的少数是由于 VM 自身错误导致;但是在大多数情况下,导致问题的原因是由于 VM(比如 IBM® WebSphere® Application Server)之上的软件堆栈或应用程序本身的错误或配置不当。

随着信息技术的成熟,一个典型项目的软件堆栈变得日益复杂,这也导致开发人员确定问题原因的难 度日益增大。在这么一个复杂的环境下,您为了诊断一个错误,可能要面对大量的信息。在生产环境中, 可能要面对以 GB 字节计算的堆,数以百计的线程,数以千计的类加载器,数以万计的类以及巨大数目的 对象。

IBM Dump Analyzer for Java(此后称为 Dump Analyzer)是为解决此困难而出现的一种 可扩展框架。所有内部 IBM 用户和外部客户都可以使用它,配合 IBM 的 Java 平台开发包(IBM SDK) 来诊断问题。它用分析器 审查格式化的系统转储(每个分析器对转储执行一个特定询问)并用脚本把结 果连接起来形成一个简明的分析报告。其最早的两个版本中,Dump Analyzer 将报告如下四项内容之一:

内存不足

死锁检测

VM 得到信号而终止(由于内部或中间件/Java 应用程序错误)

需要执行进一步调查

前三项都可映射到某类 VM 问题,这些问题在本文的下一节阐述。

阅读本文后面的内容并不需要背景知识。您可以获得使用 Dump Analyzer 分析系统转储的分步指导, 同时从较高层次大致了解该工具及其体系结构。阅读完本文后,您应当能够深刻地理解在何种情况下需要 使用 Dump Analyzer,并对其基础架构有一定的了解。

从较高层次查看 VM 问题类型

VM 在执行时出现的故障可能有多种方式,每种故障都需要不同的诊断方法。在您详细了解 Dump Analyzer 的工作之前,有必要检视这些不同类型的问题以及为解决它们所需要做的分析。

内存不足

VM 可能由于内存不足而失败 — VM 使用 Java 堆内存或本地内存来存放线程堆栈、类信息、JIT 代 码、图像元素以及其它与操作系统交互所需的器件。

诊断此类问题可能会异常困难,因为导致问题的内存分配本身并非罪魁祸首;某个大的内存集合可能 一直在增长,直到 VM 最终耗尽所有可用堆空间。通常,需要检查堆的内容并将不同时期的堆快照进行对 比,从而才能确定快速增长的内存集合。