系统WEB应用主机内部提供F5对外访问,但主机有运行几天就有内存无法再被回收情况,有的运行几天又都是正常的,但总有1台或两台运行时间一长就会出现这种情况,从java VisualVM反应的情况就是,见附件1.jpg,改图当前是正常的,有问题时就是OLD区被占满,GC回收时间间隔短,执行时间长。
系统配置:
4C、8G,suse10
JVM: Java HotSpot(TM) 64-Bit Server VM (1.5.0_16-b02, mixed mode)
Java: version 1.5.0_16-b02, vendor Sun Microsystems Inc.
Java Home 目录: /home/jdk1.5.0_16/jre
启动参数配置:
-XX:+UseParallelGC
-XX:ParallelGCThreads=8
-XX:NewRatio=16
-XX:+UseAdaptiveSizePolicy
-Xms4096m
-Xmx4096m
-Xss128k
-XX:PermSize=128m
-XX:MaxPermSize=384m
-Djava.net.preferIPv4Stack=true
-Xmn2048m
-XX:+HeapDumpOnOutOfMemoryError
使用jmap输出文本对象(抓了3台)
1、old区满的情况:
Size Count Class description
-------------------------------------------------------
622511200 3796153 java.util.HashMap$Entry[]
311665280 2239754 java.lang.Object[]
297596064 4406135 char[]
287171952 5982749 java.util.HashMap$Entry
242525056 3789454 java.util.HashMap
184684240 4617106 java.lang.String
114521112 1590571 org.codehaus.xfire.service.MessagePartInfo
113174408 71462 int[]
103872760 2596819 java.util.LinkedList$Entry
92854880 2321372 javax.xml.namespace.QName
77773680 1944342 java.util.ArrayList
55739896 48712 byte[]
48848800 288459 * ConstMethodKlass
36148200 903705 java.util.LinkedList
33771512 27024 * ConstantPoolKlass
33403368 219759 java.lang.reflect.Method
30008520 288459 * MethodKlass
27954880 698872 javax.servlet.jsp.tagext.TagAttributeInfo
22426264 27024 * InstanceKlassKlass
21478776 402047 * SymbolKlass
2、old区快要满的:
Size Count Class description
-------------------------------------------------------
360480816 2230466 java.util.HashMap$Entry[]
273874664 3657052 char[]
196100776 1521239 java.lang.Object[]
165157056 3440772 java.util.HashMap$Entry
152779520 3819488 java.lang.String
142179968 2221562 java.util.HashMap
59637440 65040 byte[]
58752432 816006 org.codehaus.xfire.service.MessagePartInfo
54484760 1362119 java.util.LinkedList$Entry
49916576 293401 * ConstMethodKlass
47807760 1195194 javax.xml.namespace.QName
47486360 1187159 java.util.ArrayList
37886096 84612 int[]
35006536 28240 * ConstantPoolKlass
30522360 293401 * MethodKlass
29663480 741587 javax.servlet.jsp.tagext.TagAttributeInfo
29563848 194499 java.lang.reflect.Method
23126800 28240 * InstanceKlassKlass
22032144 411509 * SymbolKlass
3、当前运行正常的:
Size Count Class description
-------------------------------------------------------
242126328 2752744 char[]
115137520 2878438 java.lang.String
91923704 628401 java.util.HashMap$Entry[]
70395152 653622 java.lang.Object[]
66164000 59260 byte[]
50392144 295524 * ConstMethodKlass
39696704 620261 java.util.HashMap
36571872 761914 java.util.HashMap$Entry
35515992 28811 * ConstantPoolKlass
32641240 816031 javax.servlet.jsp.tagext.TagAttributeInfo
30743152 295524 * MethodKlass
23503800 28811 * InstanceKlassKlass
23299472 153286 java.lang.reflect.Method
22029816 410367 * SymbolKlass
20226304 24580 * ConstantPoolCacheKlass
14991640 374791 java.util.ArrayList
12994720 81217 org.apache.xmlbeans.impl.store.Xobj$AttrXobj
11511024 239813 java.lang.ref.WeakReference
10731744 17196 * MethodDataKlass
10178952 181767 java.lang.ref.SoftReference
9990376 113527 org.apache.jasper.compiler.Mark
9893120 77290 org.apache.jasper.compiler.Node$TemplateText
9639896 35253 short[]
9165160 129216 java.lang.String[]
8690496 362104 java.lang.Integer
对比分析,hashmap够多呀,请高手进来都发表发表吧,能找出问题来,有机会希望一起共事啊。

- 大小: 18 KB
分享到:
相关推荐
这种问题在 Ajax 盛行以前并不是什么大问题,因为都是通过页面跳转和刷新来进行与服务端的交互,但是现在情况不一样了,很多应用广泛应用 Ajax 和 iframe,结果内存泄漏成了很多富客户端应用的隐患。 Iframe 内存...
4. **报告生成**:LeakTracer会生成详细的报告,列出所有检测到的内存泄漏情况,包括泄漏对象的信息、引用路径等,帮助开发者定位问题。 在使用LeakTracer时,开发者需要注意以下几点: 1. **集成**:将LeakTracer...
3. 在 dev-runner.js 中找到了关于杀死进程的方法,使用 process.kill(electronProcess.pid) 杀死进程,以解决内存泄漏问题。 解决思路: 使用 process.kill(electronProcess.pid) 杀死进程,以解决内存泄漏问题。...
通过分析Valgrind的报告,开发者可以找到程序中可能存在的内存泄漏问题,进而修改代码,避免内存资源的浪费。记住,尽管Valgrind非常强大,但并不是所有类型的内存泄漏都能被它检测出来,比如静态分配的内存或者某些...
1. **当前内存图**:该工具能够展示程序运行时的内存分布情况,包括各类型数据占用的内存大小,帮助开发者快速定位可能存在内存问题的区域。 2. **热点函数分析**:通过对函数调用进行跟踪,LuaMonitor能找出消耗...
在怀疑存在内存泄漏时,先运行umdh.exe获取进程的内存使用情况快照。通过对比不同时间点的快照,我们可以发现内存使用量的变化,从而推测是否存在内存泄漏。 2. **启动WinDbg**: 使用WinDbg附加到目标进程,可以...
通过监视应用程序的内存使用情况,开发者可以观察到内存是否持续增长,进而怀疑是否存在内存泄漏。 另一个著名的工具是MAT (Memory Analyzer Tool),它是一款强大的Eclipse插件,专门用于分析HProf内存转储文件。...
它不仅可以帮助开发者检测内存泄露问题,还能提供详细的错误报告,包括内存泄露的位置、大小以及分配时的具体情况等信息,极大地提高了调试效率。此外,VLD 支持多种版本的 Visual C++,并且采用 LGPL 许可证发布,...
在软件开发领域,尤其是涉及到数据库应用的场景下,内存泄漏(Memory Leak)和内存溢出(Out of Memory,简称OOM)是两个常见的问题,它们直接影响到程序的性能、稳定性和可扩展性。以下是对这两个概念及其相关知识...
通过分析heap dump,可以发现长期存在的对象和潜在的内存泄露。Allocation Tracker功能则用于追踪内存分配的过程,通过开始和停止追踪,你可以看到在特定时间段内哪些对象被创建,帮助定位内存占用的源头。 ...
### 关于Java内存泄漏 #### 一、Java内存管理机制 Java的一大特色在于其自动化的内存管理机制,这主要依赖于垃圾收集器(Garbage Collection, GC)来自动完成对象的内存分配与回收。尽管这一特性极大地减轻了...
由于C++不提供自动垃圾回收机制,程序员需要手动分配和释放内存,这既赋予了我们高度的灵活性,也带来了潜在的内存泄漏风险。下面将详细讨论C++内存管理中的关键知识点,以及如何防止内存泄漏。 首先,理解C++中的...
内存管理和优化是JavaScript...总之,理解和掌握内存管理和闭包在JavaScript中的工作原理对于编写高效、无泄漏的代码至关重要。通过合理的设计、及时的解除引用以及有效的监控,可以显著提高应用程序的性能和稳定性。
在`sample.c`和`wrong.c`文件中,可能包含了一些内存管理的示例,其中`sample.c`可能是正确的用法,而`wrong.c`则可能存在内存泄漏的问题。通过比较这两份代码,我们可以学习如何正确分配和释放内存,以及理解内存...
本篇文章将深入探讨ClassLoader的关系网络以及如何避免因ClassLoader导致的内存泄漏问题。 首先,我们来理解ClassLoader的层次结构。Java中的类加载器大致分为以下几类: 1. 基本类加载器(Bootstrap ClassLoader...
首先,打开需要测试的网页,然后运行检测工具,它将分析网页的内存使用情况,并指出可能存在的泄漏点。用户指南文档`IE Javascript leaks detector - user guide.docx`提供了详细的使用步骤和解释。 5. **其他工具*...
然而,实际情况并非如此,Android应用同样存在内存泄漏的问题。以下是几个导致Android内存泄漏的主要因素及其相关知识点。 1. 引用没有释放造成的内存泄漏 在Android开发中,如果不正确地管理对象引用,可能会导致...
通过JProfiler,你可以实时监测应用的内存使用、CPU消耗、线程状态,以及查找可能存在的内存泄漏问题。下面将详细介绍JProfiler在检查内存泄漏方面的关键功能。 **内存剖析** 1. **对象统计与尺寸信息**:...
3. **检测与定位内存泄漏**:在程序正常退出时,检查内存使用记录数据结构中是否存在未被释放的内存条目。如果有,则这些条目所指向的内存即为泄漏的内存。此外,还可以进一步定位到具体的内存分配位置,便于程序员...