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

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

 2010-01-15 00:00:00 来源:WEB开发网   
核心提示:引言内存泄漏的成本非常高昂,经常伴随着产品停机时间和零碎的部署安排,WebSphere Application Server 中的内存泄漏检测与分析: 第 1 部分:内存泄漏概述,遗憾的是,合适测试解决方案的成本也十分高昂,不能容纳当前工作负载,本机内存泄漏是非 Java 代码中的内存泄漏;例如,客户经常不愿意或者不能

引言

内存泄漏的成本非常高昂,经常伴随着产品停机时间和零碎的部署安排。遗憾的是,合适测试解决方案的成本也十分高昂,客户经常不愿意或者不能对必要的资源进行投资。

为了更加清楚起见,解决内存泄漏的最佳方法是在测试时检测并解决它们。理想情况下,应当进行测试安排,并且有一种与产品环境完全相同的测试环境,这种环境能够驱动典型的和异常的工作负载,还应当有技术资源,他们具备专门进行系统测试的适当技能。这是尽可能确保完全转换到产品的最佳方式。但是,设计和提供这样一种环境,以及相关的文化变化,都不是本文的重点。

Java 中有四类常见的内存使用问题:

Java 堆内存泄漏

堆碎片

内存资源不足

本机内存泄漏。

WebSphere Application Server 已经引入了两种辅助技术,用以帮助客户解决 Java 堆内存泄漏(对这些工具进行一定的扩展还可以解决由于内存资源不足所导致的问题,在本文中没有比较这两种问题的相似性)。

一般来说,当应用程序(由于程序逻辑错误)无意中保存对于不再需要的对象的引用时,会导致 Java 堆内存泄漏。这种无意对象引用阻止内置 Java 垃圾回收机制释放由这些对象所使用的内存。这些内存泄漏的共同原因是:

向集合中插入而没有删除

未绑定的缓存

未调用的侦听器方法

无限循环

过多的会话对象

编写不佳的自定义数据结构。

由于内存资源不足而产生的内存使用问题可能是由于配置问题或系统容量问题所导致的。例如,在为 Java 虚拟机配置最大允许堆大小时所使用的 -Xmx 参数值过低,不能容纳内存中的用户会话总数。或者,系统的物理内存过少,不能容纳当前工作负载。本机内存泄漏是非 Java 代码中的内存泄漏;例如,在 Type-II JDBC 驱动程序或者 Java 进程的地址空间中的非堆段内的碎片。

1 2 3 4 5 6  下一页

Tags:WebSphere Application Server

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