`
zhb8015
  • 浏览: 399680 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Spring Roo杂谈
浏览量:0
社区版块
存档分类
最新评论

内存泄漏分析实例

阅读更多
一、摘要
二、报错信息
三、分析过程
四、参考资料


******************************
一、摘要
    最近生产上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
分享到:
评论

相关推荐

    ThreadLocal 内存泄露的实例分析1

    然而,如果存在对 WebappClassLoader 的强引用,那么这个类加载器就无法被回收,进而导致了内存泄漏。 在描述的案例中,`LeakingServlet` 是一个使用了 `ThreadLocal` 的 Servlet。`ThreadLocal` 是 Java 中用于在...

    Iframe内存泄露分析

    Iframe 内存泄露分析是指在使用 Iframe 时,由于互相引用、闭包、跨页面泄漏、伪泄漏等原因,导致浏览器内存泄漏的问题。这种问题在 Ajax 盛行以前并不是什么大问题,因为都是通过页面跳转和刷新来进行与服务端的...

    JVisualVM简介与内存泄漏实战分析

    #### 使用jVisualVM分析内存泄漏 - **查看VisualGC插件**:通过VisualGC插件可以直观地看到内存使用情况的变化。如果发现老生代的内存没有减少或者始终占用大量空间,这可能意味着存在内存泄漏。 - **进行堆转储**...

    linux下检查内存泄漏的工具+例子

    Valgrind是一款开源的动态分析工具,主要用于检测C和C++程序中的内存错误,包括内存泄漏、未初始化的内存读取、无效指针访问等。它通过构建一个虚拟机,使得程序在该虚拟机上运行,从而能够对内存操作进行精细的监控...

    Android 内存泄露 Mat工具分析

    Memory Analyzer Tool(MAT)是一个功能强大且广泛使用的内存泄露分析工具。本文将详细介绍如何使用 MAT 分析 Android 应用程序中的内存泄露,特别是如何根据 heap dump 分析泄漏根源。 ClassLoader 和 Java 类加载...

    java内存分析-内存泄露问题.rar

    2. **识别泄漏对象**:通过分析快照,找到长时间存活且占用内存大的对象,这些可能是潜在的内存泄漏源。 3. **查找引用链**:分析引用链,理解为什么这些对象没有被GC回收,可能存在哪些强引用、软引用、弱引用或虚...

    android 内存泄露 分析方法

    Android 内存泄露分析方法 Android 内存泄露是一个非常常见的问题,它可能会导致应用程序崩溃或性能下降。了解内存泄露的原理和分析方法是非常重要的。 在本文中,我们将介绍使用 Memory Analyzer Tool(MAT)来...

    android系统分析内存泄露测试

    例如,注册监听器未及时注销,BroadcastReceiver、ContentObserver、Service等组件没有正确停止,或者是AsyncTask的实例没有被正确释放,都可能导致内存泄漏。因此,开发过程中应遵循最佳实践,例如,使用弱引用...

    内存泄露分析工具(IBM HeapAnalyzer 和 Pattern Modeling and Analysis )

    对于大型复杂系统,定期进行这样的分析并及时修复内存泄漏至关重要,可以显著提高应用的稳定性和性能。 ha408.zip和ga403.zip可能包含了HeapAnalyzer和PMA的示例数据或者工具的更新版本,解压后可以进一步了解这两...

    Android处理内存泄漏的代码例子

    在ExmLeak这个压缩包文件中,你可以找到具体的代码实现,通过分析和实践这些例子,你将更好地理解和掌握如何避免Android应用中的内存泄漏问题。记住,良好的内存管理是提升应用性能和稳定性的重要因素。

    详解QT内存泄露问题

    #### 实例分析 考虑一个简单的场景,一个窗口`MainWindow`作为父对象,其中包含多个子控件,如按钮、文本框等。当`MainWindow`关闭时,所有子控件应被自动销毁,无需额外的`delete`操作。然而,如果子控件中某个...

    java 内存泄露分析流程

    总的来说,Java内存泄露分析是一个涉及多方面知识的过程,需要结合理论和实践来有效定位和解决问题。通过对内存模型、垃圾收集机制的理解,以及利用各种工具和技巧,我们可以有效地预防和解决内存泄露,确保系统的...

    如何解决Java内存泄漏

    常见内存泄漏实例 ##### 4.1 简单的例子 - **静态集合**:当使用静态集合存储临时对象时,如果没有正确地清空集合,会导致这些对象无法被垃圾回收。 - **监听器**:注册了监听器但未及时取消注册,也会导致对象...

    memory analyzer 内存泄露

    MAT通过分析heap dump文件(即Java虚拟机的堆内存快照),提供详尽的内存使用报告,包括对象统计、支配树分析、疑似内存泄露集合等,以帮助我们识别那些占用大量内存但不再被程序需要的对象。 1. **MAT的使用方法**...

    Android内存泄漏案例分析

    在本次技术公开课中,讲师张权威将深入剖析Android平台下的内存泄漏案例,通过对一个具体案例的分析,展示内存泄漏的形成原因、诊断流程以及解决方案。 首先,案例中提到当连续多次打开应用时,界面出现卡顿,并且...

    electron-vue开发环境内存泄漏问题汇总

    在使用Electron结合Vue进行桌面应用开发时,内存泄漏是一个常见且需要重点关注的问题。内存泄漏问题的出现会逐渐消耗系统资源,最终可能导致应用崩溃或运行缓慢。在Electron中,内存泄漏主要跟主进程和渲染进程的...

    JProfiler检查内存泄漏

    通过JProfiler,你可以实时监测应用的内存使用、CPU消耗、线程状态,以及查找可能存在的内存泄漏问题。下面将详细介绍JProfiler在检查内存泄漏方面的关键功能。 **内存剖析** 1. **对象统计与尺寸信息**:...

    windows内存泄露检测实例

    3. **泄漏检测算法**:自定义实现内存泄露检测,例如,为每个分配的内存块记录信息,包括分配大小、分配位置(文件和行号)等,并在程序结束时检查未释放的内存块。这可以通过封装`malloc`、`new`等函数来实现。 4....

    使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践)

    在.NET开发环境中,内存泄漏是一个严重的问题,可能导致应用程序性能下降,甚至崩溃。本文将深入探讨如何使用.Net Memory Profiler这一专业工具来诊断和解决.NET应用的内存泄漏问题。.Net Memory Profiler是一款强大...

Global site tag (gtag.js) - Google Analytics