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 最终耗尽所有可用堆空间。通常,需要检查堆的内容并将不同时期的堆快照进行对 比,从而才能确定快速增长的内存集合。 IBM的Java诊断,第1部分(2)时间:2011-11-02 IBM Helen Beeken死锁 所谓死锁,是指两个以上的进程之间互相等待对方释放资源。某个占有资源的线程(如监视器)无法 获得另一资源的所有权,因为该资源被另一线程所有而且它正在试图获得第一个线程占用的资源的所有权 。这种错误经常表现为性能问题。相对而言这比较容易诊断,只需检查线程状态以及它们所拥有的资源。 内部错误 导致内部错误的原因包括: 本机代码可能尝试访问具有无效输入(如过时的本地引用)或编码错误的对象。 垃圾收集器可能错误地收回某些存储,当引用这些存储时,似乎包含到尚未初始化内存的指针。 JIT 编译器可能生成错误代码,该代码引用或尝试对无效的位置进行分支。 Java 应用程序或中间件的错误 Dump Analyzer 目前处理在 VM 自身 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |