WEB开发网
开发学院软件开发Java WebSphere Application Server 中的内存泄漏检测与... 阅读

WebSphere Application Server 中的内存泄漏检测与分析: 第 1 部分:内存泄漏概述

 2010-01-15 00:00:00 来源:WEB开发网   
核心提示: WebSphere Application Server 提供了用于承载来自第三方 J2EE 应用程序的容器,当 Java 堆栈随时间发展时,WebSphere Application Server 中的内存泄漏检测与分析: 第 1 部分:内存泄漏概述(5),越来越多的抽象层和组件化被添加到基本

WebSphere Application Server 提供了用于承载来自第三方 J2EE 应用程序的容器。当 Java 堆栈随时间发展时,越来越多的抽象层和组件化被添加到基本 Java 应用程序以及WebSphere Application Server 堆栈中。这样就对发生内存泄漏时进行问题确定造成了巨大的挑战。对于一个遇到内存泄漏的系统管理员来说,承载着大量第三方应用程序的 WebSphere Application Server 就像是一个黑盒。在这种情况下,第一个步骤是将内存泄漏的根源限制到一个或几个组件。根源通常位于一个发生故障的组件应用程序中。在 Memory Dump Diagnostic for Java 工具的分析结果的帮助下,系统管理员现在可以更快速地确定一个错误组件,而不需要来自 IBM 的任何支持。

一旦确定了发生故障的组件,系统管理员可以找到一位开发人员,他能够在更小环境中重现这一问题,并使用调试器或日志记录中的特定跟踪语句来确定错误的源代码方法,并对应用程序代码或者配置进行必要的修改,以解决内存泄漏。有时,了解到故障组件或泄漏对象就足以使我们确定一些常见的配置问题。例如,查找大量的 HTTP 会话对象将会引导我们查看 HTTP 会话超时配置。

这一工具提供的两种主要分析功能是:

单一转储分析最经常与内存转储一起使用,它们由 IBM Developer Kit、带有 OutOfMemoryExceptions 异常的Java Technology Edition 自动触发。这一分析类型使用启发式进程来确定受怀疑的数据结构,这些数据结构拥有一个带有大量子对象的容器对象。这一启发式进程对于检测泄漏 Java 集合对象非常有效,这些对象使用一个内部数组来存储所包含的对象。在大量由 IBM Support 处理的内存泄漏案例中,已经发现这一启发式进程非常有效。

比较分析用于比较两个在一次运行内存泄漏应用程序期间(也就是当自由 Java 堆内存减少时)所取得的两个内存转储(主转储和基线转储)。比较分析非常适合与轻量级内存泄漏检测一起使用。对于比较分析,主转储表示在已经发生大量内存泄漏时(占用最大配置堆大小的大量内存)所取得转储。基线转储是指当堆尚未因内存泄漏而被大量耗用时早期取得的堆转储。这两个转储之间的堆耗用越大,分析结果就越好。

上一页  1 2 3 4 5 6 7  下一页

Tags:WebSphere Application Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接