一、摘要
二、报错信息
三、分析过程
四、参考资料
******************************
一、
摘要
最近生产上WAS遇到OOM问题宕机,产生了一大堆的dump文件。因为开始内存泄漏问题分析的紧张过程。
二、
报错信息
三、
分析过程
1、问题分析
A.程序代码某些线程造成死锁或程序中存在死循环。
B.程序代码编写不当造成某些资源无法被释放或被耗尽(如:网络链接,数据库链接,内存使用情况)
C.不适当的调优参数引起性能瓶颈从而引起hang机
a.Web 容器 (JVM),数据库
b.Web 容器等待一个外部资源的响应resource
c.资源的限制(如 cpu、Memory 典型的 Java heap、network)
2、工具选择 Ibm analyzer 对生成的文件进行分析。
JCA进行javacore文件进行分析
A、分析javacore文件发现
***WARNING*** Java heap is almost exhausted : 0% free Java heap Please enable verbosegc trace and use IBM Pattern Modeling and Analysis Tool(http://www.alphaworks.ibm.com/tech/pmat) to analyze garbage collection activities. If heapdumps are generated at the same time, please use IBM HeapAnalyzer(http://www.alphaworks.ibm.com/tech/heapanalyzer) to analyze Java heap.
[img]http://dl2.iteye.com/upload/attachment/0090/9074/62f3b205-0d15-3119-800e-c410b3f790ce.bmp
[/img]
四、
参考资料
一次成功的内存泄漏分析
http://linux.chinaitlab.com/administer/787936.html
WAS6x问题分析案例
http://yishueitian326.blog.163.com/blog/static/2858637520121392416734/
IBM免费分析工具
http://www.ibm.com/developerworks/cn/websphere/techjournal/0807_supauth/0807_supauth.html
性能调优攻略
http://coolshell.cn/articles/7490.html
使用 IBM 性能分析工具解决生产环境中的性能问题
http://www.ibm.com/developerworks/cn/java/j-lo-javacore/
应用服务器内存泄露问题诊断一例
http://www.ibm.com/developerworks/cn/java/j-performance/
博客逐步完善,敬请期待....
- 大小: 18.9 KB
分享到:
相关推荐
然而,如果存在对 WebappClassLoader 的强引用,那么这个类加载器就无法被回收,进而导致了内存泄漏。 在描述的案例中,`LeakingServlet` 是一个使用了 `ThreadLocal` 的 Servlet。`ThreadLocal` 是 Java 中用于在...
Iframe 内存泄露分析是指在使用 Iframe 时,由于互相引用、闭包、跨页面泄漏、伪泄漏等原因,导致浏览器内存泄漏的问题。这种问题在 Ajax 盛行以前并不是什么大问题,因为都是通过页面跳转和刷新来进行与服务端的...
#### 使用jVisualVM分析内存泄漏 - **查看VisualGC插件**:通过VisualGC插件可以直观地看到内存使用情况的变化。如果发现老生代的内存没有减少或者始终占用大量空间,这可能意味着存在内存泄漏。 - **进行堆转储**...
Valgrind是一款开源的动态分析工具,主要用于检测C和C++程序中的内存错误,包括内存泄漏、未初始化的内存读取、无效指针访问等。它通过构建一个虚拟机,使得程序在该虚拟机上运行,从而能够对内存操作进行精细的监控...
Memory Analyzer Tool(MAT)是一个功能强大且广泛使用的内存泄露分析工具。本文将详细介绍如何使用 MAT 分析 Android 应用程序中的内存泄露,特别是如何根据 heap dump 分析泄漏根源。 ClassLoader 和 Java 类加载...
2. **识别泄漏对象**:通过分析快照,找到长时间存活且占用内存大的对象,这些可能是潜在的内存泄漏源。 3. **查找引用链**:分析引用链,理解为什么这些对象没有被GC回收,可能存在哪些强引用、软引用、弱引用或虚...
Android 内存泄露分析方法 Android 内存泄露是一个非常常见的问题,它可能会导致应用程序崩溃或性能下降。了解内存泄露的原理和分析方法是非常重要的。 在本文中,我们将介绍使用 Memory Analyzer Tool(MAT)来...
例如,注册监听器未及时注销,BroadcastReceiver、ContentObserver、Service等组件没有正确停止,或者是AsyncTask的实例没有被正确释放,都可能导致内存泄漏。因此,开发过程中应遵循最佳实践,例如,使用弱引用...
对于大型复杂系统,定期进行这样的分析并及时修复内存泄漏至关重要,可以显著提高应用的稳定性和性能。 ha408.zip和ga403.zip可能包含了HeapAnalyzer和PMA的示例数据或者工具的更新版本,解压后可以进一步了解这两...
在ExmLeak这个压缩包文件中,你可以找到具体的代码实现,通过分析和实践这些例子,你将更好地理解和掌握如何避免Android应用中的内存泄漏问题。记住,良好的内存管理是提升应用性能和稳定性的重要因素。
#### 实例分析 考虑一个简单的场景,一个窗口`MainWindow`作为父对象,其中包含多个子控件,如按钮、文本框等。当`MainWindow`关闭时,所有子控件应被自动销毁,无需额外的`delete`操作。然而,如果子控件中某个...
总的来说,Java内存泄露分析是一个涉及多方面知识的过程,需要结合理论和实践来有效定位和解决问题。通过对内存模型、垃圾收集机制的理解,以及利用各种工具和技巧,我们可以有效地预防和解决内存泄露,确保系统的...
常见内存泄漏实例 ##### 4.1 简单的例子 - **静态集合**:当使用静态集合存储临时对象时,如果没有正确地清空集合,会导致这些对象无法被垃圾回收。 - **监听器**:注册了监听器但未及时取消注册,也会导致对象...
MAT通过分析heap dump文件(即Java虚拟机的堆内存快照),提供详尽的内存使用报告,包括对象统计、支配树分析、疑似内存泄露集合等,以帮助我们识别那些占用大量内存但不再被程序需要的对象。 1. **MAT的使用方法**...
在本次技术公开课中,讲师张权威将深入剖析Android平台下的内存泄漏案例,通过对一个具体案例的分析,展示内存泄漏的形成原因、诊断流程以及解决方案。 首先,案例中提到当连续多次打开应用时,界面出现卡顿,并且...
通过JProfiler,你可以实时监测应用的内存使用、CPU消耗、线程状态,以及查找可能存在的内存泄漏问题。下面将详细介绍JProfiler在检查内存泄漏方面的关键功能。 **内存剖析** 1. **对象统计与尺寸信息**:...
3. **泄漏检测算法**:自定义实现内存泄露检测,例如,为每个分配的内存块记录信息,包括分配大小、分配位置(文件和行号)等,并在程序结束时检查未释放的内存块。这可以通过封装`malloc`、`new`等函数来实现。 4....
在.NET开发环境中,内存泄漏是一个严重的问题,可能导致应用程序性能下降,甚至崩溃。本文将深入探讨如何使用.Net Memory Profiler这一专业工具来诊断和解决.NET应用的内存泄漏问题。.Net Memory Profiler是一款强大...
Flex 应用内存泄露的分析与诊断主要集中在 Flex 应用程序中由于内存管理不当导致的问题。Flex 使用 ActionScript 语言编写,其运行环境在 FlashPlayer 的 ActionScript Virtual Machine (AVM) 中,该虚拟机包含一个...