系统上线后,经常出现内存泄漏的情况,具体如下:
生产环境:AIX53+Weblog 9.2+Oracle
应用:SSH
项目中使用了自定义的tag,实现tab页的功能,即一个页面有多个tab页签构成。下面的错误是OutOfMemoryError报的错误信息,注意标红的地方,这个OutOfMemoryError总是出现在这个地方。
java.lang.OutOfMemoryError
at com.ibm.oti.vm.VM.initializeClassLoader(Native Method)
at java.lang.ClassLoader.<init>(ClassLoader.java:118)
at sun.reflect.ClassDefiner$1.run(ClassDefiner.java:60)
at java.security.AccessController.doPrivileged(AccessController.java:193)
at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:57)
at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:399)
at java.security.AccessController.doPrivileged(AccessController.java:193)
at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:395)
at sun.reflect.MethodAccessorGenerator.generateMethod(MethodAccessorGenerator.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:52)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:208)
at org.apache.commons.digester.Rule.end(Rule.java:228)
at org.apache.commons.digester.Digester.endElement(Digester.java:1067)
at weblogic.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:586)
at weblogic.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:223)
at weblogic.apache.xerces.impl.XMLNamespaceBinder.emptyElement(XMLNamespaceBinder.java:596)
at weblogic.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:748)
at weblogic.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1478)
at weblogic.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:330)
at weblogic.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:526)
at weblogic.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:582)
at weblogic.apache.xerces.parsers.XMLParser.parse(XMLParser.java:153)
at weblogic.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1176)
at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133)
at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:153)
at org.apache.commons.digester.Digester.parse(Digester.java:1610)
at com.gwssi.gwaic.common.taglib.html.TabsTag.parse(TabsTag.java:166)
at com.gwssi.gwaic.common.taglib.html.TabsTag.doEndTag(TabsTag.java:36)
at jsp_servlet._gwaic._module._qydj._sl._bg.__yxzrgs._jsp__tag22(__yxzrgs.java:947)
at jsp_servlet._gwaic._module._qydj._sl._bg.__yxzrgs._jspService(__yxzrgs.java:265)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:496)
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:245)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.gwssi.gwaic.common.GwssiController.doFilter(GwssiController.java:91)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.gwssi.framework.console.controller.GwssiControllerFilter.doFilter(GwssiControllerFilter.java:40)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.gwssi.framework.console.controller.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:102)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3212)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1983)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1890)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1344)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
标红的部分,业务上是点一个“受理”按钮,然后生成一个具有10几个的tab页签的页面。
附件里是我用heapAnalyzer打开宕机后产生的heapdump文件的分析结果,嫌疑最大的引起泄漏的地方分析出的大致的意思是一个hashmap里面放了35个list,一下子占了当前可用heap size 的60%,可是如何知道,这个“嫌疑犯”藏在应用程序的哪个角落???如何找到包名,类名?
哪位分析过内存泄漏的分析一下?
- 大小: 71.5 KB
分享到:
相关推荐
当应用程序出现内存泄漏时,HeapAnalyzer可以帮助开发者定位导致内存泄漏的对象和它们的引用路径。通过分析heapdump文件(通常由JVM生成),HeapAnalyzer可以显示内存占用最大的对象、类和包,帮助识别潜在的问题。...
IBM HeapAnalyzer是一款强大的Java虚拟机(JVM)内存分析工具,专为诊断和解决Java应用程序的内存泄漏问题而设计。这个工具能够帮助开发者深入理解Java应用程序的内存使用情况,从而优化性能并防止由于内存泄漏导致...
HeapAnalyzer是一款Java内存分析工具,由IBM开发,它可以帮助开发者检查和分析Java堆内存的状态,找出可能存在的内存泄漏或者过度占用内存的对象。通过分析heap dump文件,HeapAnalyzer可以展示对象的分布情况,识别...
为了解决这个问题,开发人员需要有效地诊断和分析内存的使用情况。HeapAnalyzer456.jar 是一个专门用于分析Java内存溢出的专业工具,它可以帮助开发者深入理解内存的分配、使用和泄漏状况。本篇文章将详细介绍如何...
IBM HeapAnalyzer是一款强大的Java内存分析工具,主要用于诊断和解决Java应用程序中的内存泄漏问题。这款工具通过对Java堆内存的深入分析,帮助开发者定位那些占用过多内存的对象,从而优化应用性能。在Java开发过程...
于是,我们使用 HeapAnalyzer 工具来查找应用程序中的性能瓶颈,终于发现了应用程序中的内存泄露问题,并对其进行了优化,终于解决了 OOM 问题。 使用 HeapAnalyzer 工具可以帮助开发者快速地找出应用程序中的性能...
IBM Java堆内存分析工具——HeapAnalyzer,是一款专为IBM J9 VM设计的强大内存分析工具,它可以帮助开发者深入理解Java应用程序的内存使用情况,检测并解决内存泄漏问题,从而提升应用性能。本文将详细介绍Heap...
IBM HeapAnalyzer 最新版本 java内存分析工具,性能调优,内存泄露排除比不可少的工具
在提供的文件列表中,`IBM heapAnalyzer分析heap dump.doc`可能是一份使用HeapAnalyzer进行heap dump分析的详细步骤文档,`readme.html`通常包含软件的使用说明和注意事项,`ha39.jar`是HeapAnalyzer的可执行程序...
- **内存泄漏排查:** 如果应用内存持续增长,可能导致服务崩溃,Heap Analyzer能帮助找到泄漏源头。 - **开发阶段测试:** 在开发过程中,使用Heap Analyzer可以尽早发现内存管理问题,避免问题积累到生产环境。 ...
HeapAnalyzer通过深入分析Java堆内存的使用情况,帮助开发者找到那些占用内存过大的对象,从而优化应用性能,防止系统因内存耗尽而导致的崩溃。 **一、HeapAnalyzer的工作原理** HeapAnalyzer通过收集Java虚拟机...
通过使用 IBM HeapAnalyzer,开发者可以快速地分析 Java 堆转储,检测可能的 Java 堆泄漏,并找到泄漏嫌疑人的位置。 IBM HeapAnalyzer 提供了多种功能,包括: * 查看内存溢出的占比和大小 * 明确显示代码内存...
IBM开发的强大的内存dump分析工具,,IBM heapAnalyzer是通过分析OOM后的Java heap dump文件的,通过对dump文件的分析找到内存可能泄露的点
4. **CPU分析**:除了内存,HeapAnalyzer还可能提供CPU使用情况的监控,这对于诊断CPU消耗过高的问题非常有帮助。 5. **线程分析**:分析线程状态和死锁,有助于找出造成性能瓶颈的原因。 6. **优化建议**:根据分析...
IBM的HeapAnalyzer工具就是针对这类问题的专业解决方案,专门用于分析JVM(Java虚拟机)的内存使用情况,特别是针对内存泄漏和高CPU使用率的情况。下面将详细阐述HeapAnalyzer的功能、工作原理以及如何使用它来解决...
"heapAnalyzer"是一款用于分析Java堆内存的工具,它能够帮助开发者定位内存泄漏问题和优化内存使用效率。在Java应用程序中,堆内存是程序运行时动态分配对象的主要区域,如果管理不当,可能会导致内存泄漏,进而影响...
- **分析内存问题**:IBM HeapAnalyzer会展示内存概述、类统计、对象生存周期、内存泄漏嫌疑对象等视图。你可以通过这些视图找出占用内存最大的类,观察对象的生命周期,寻找可能的内存泄漏源。 3. **常见分析方法...
HeapAnalyzer通过分析heapdump文件,以了解哪些对象占用了太多的堆栈空间,来发现导致内存泄露或者可能引起内存泄露的对象。启动后使用open file菜单,浏览打开我们需要进行内存堆栈分析的heapdump文件
【标题】"HeapAnalyzer" 是一个专门用于诊断和分析Java应用程序内存使用情况的工具,尤其在WebSphere应用服务器环境中有着广泛的应用。它帮助开发者和系统管理员深入理解Java堆内存的分配和使用,以便优化性能,解决...