`
huhanfu
  • 浏览: 16242 次
  • 来自: ...
社区版块
存档分类
最新评论

关于内存存在泄漏情况

阅读更多
系统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
分享到:
评论
2 楼 huhanfu 2011-07-07  
写的很清楚是tomcat部署的,没有其它容器,谢谢大家的关注,已经解决了。
1 楼 lazierman 2011-06-30  
是不是使用Hibernate ?容器是什么?
很可能是线程池导致内存泄漏

相关推荐

    GDB查找内存泄露

    后台程序中经常会存在一部分内存泄露,但是不能很好的定位造成内存泄露的代码,并进行修改,内存泄露不进行修改就会造成程序运行时占用的内存不断升高,逐渐的导致系统的不稳定,现将前一段时间通过GDB调试工具查找内存...

    推荐4款linux下的c语言内存泄漏检测工具.zip

    推荐4款linux下的检测c语言编写的程序的内存泄漏工具 C语言和其他语言相比最大的特色就是能够操作内存 但是最常犯的错误也是...所以我们需要用一些工具来帮助我们检测是否存在内存泄漏,存在多少 奉上几款内存检测工具

    内存泄露静态检测模型

    摘 要 内存泄漏故障是程序中某处申请的内存空间,没有释放或没有完全释放或多次释放,是程序中常见的故障, 极易导致系统崩溃。从面向具体错误的测试思想出发,...关键词 内存泄露,区间运算,静态测试,故障模型,别名分析

    QT Creator内存泄露检测VLD

    windows下Qt creator 使用 VLD 工具的方法,下载 安装 使用 用浏览器打开

    tinyxml解析工具修复内存泄漏

    这个tinyxml是在部门产品应用过程中发现存在内存泄漏的问题,通过代码分析,解决了在xml使用结束时,内存清理不彻底而导致的内存泄漏问题。电驴源码中使用的tinyxml也存在这个问题。不知最新版有没有修复。

    java内存泄露深度分析及解决

    尽管java虚拟机和垃圾回收机制管理着大部分的内存事务,但是在java软件中还是可能存在内存泄漏的情况。的确,在大型工程中,内存泄漏是一个普遍问题。避免内存泄漏的第一步,就是要了解他们发生的原因。这篇文章就是...

    C++内存管理,如何防止内存泄漏

    C++语言是一门优秀的程序设计语言,支持多种设计范型的通用语言,相对于Java、.net等托管性语言。它的执行速度超过了他们的20倍。但是C++语言编程,我们要更加注意内存的管理,他是一把双刃剑。

    内存泄露工具.rar

    此软件为内存泄漏检测工具,版本为vld-2.5.1-setup,主要用于检测是否存在内存泄漏问题,同时支持检测c与c++编写的程序。

    检查代码内存泄露

    检查代码可能存在内存泄露的地方,不同于vld,安装简单,内部有说明文档,按照说明文档操作即可

    论文研究-移动应用程序内存泄露机制分析与检测方案设计.pdf

    Android应用程序中内存使用的问题却经常容易被忽视,部分开发者对Java垃圾回收机制认识模糊,使得内存泄漏成为Android应用开发中十分隐秘但又确实存在的应用安全问题,对内存泄漏的危害进行了阐述,并根据与Activity...

    性能优化:内存泄漏例子2

    往往做项目的时候情况非常复杂,或者项目做得差不多了想起来要性能优化检查下内存泄露。 如何找到项目中存在的内存泄露的这些地方呢?

    VC内存泄露检测以及定位方法

    VC内存泄露检测以及定位方法

    AndroidApp定位和规避内存泄露方法研究

    如何确定App存在内存泄露 如何定位App的内存泄露位置 怎样避免内存泄露 使用procrank查看进程内存 procrank 命令可以获得当前系统中各进程的内存使用快照,这里有PSS,USS,VSS,RSS。我们一般观察Uss来反映一个...

    Android App定位和规避内存泄露方法研究

    1.内容 本文档包含如下内容: 如何确定App存在内存泄露 如何定位App的内存泄露位置 怎样避免内存泄露

    Tomcat 检测内存泄漏实例详解

    一般情况下,如果我们重启web应用是通过重启tomcat的话,则不存在内存泄漏问题。但如果不重启tomcat而对web应用进行重加载则可能会导致内存泄漏,因为重加载后有可能会导致原来的某些内存无法让GC回收,例如web应用...

    vs内存泄漏检测工具

    使用Visual Leak Detector,检测vs项目中可能存在的内存泄漏。自己在win7系统,vs 2012下检测可用,其它版本vs应该也没问题。

    程序内存泄漏检测库,很实用

    大型项目存在内存泄漏难免 但寻找一个有效方法检测出来并避免之,才是正道!

    ext2.2的内存泄漏补丁

    该补丁包给几乎所有存在泄露的组件做了修正。 虽然补丁所描述的环境是ie,但实质上2.2在任何浏览器上都因为事件模型和组件本身销毁方法考虑不周的缘故使内存不断增长。

    poolmon内存泄露分析windows工具下载.txt

    Poolmon是一款windows平台下的核心内存泄漏检测工具,核心内存是windows分配给系统内核或驱动所需的内存空间,核心分页池内存或未分页池内存如果增长表明你的电脑存在核心内存泄漏,如果达到了windows所分配的最大值,...

    内存泄露检测工具源码vld

    这个内存泄漏检测器是作为 Visual C++ 内建内存泄漏检测器的一个免费替代品而被创建的。以下是 Visual Leak Detector 的一些特点,这些特点在内建检测器中都不存在: * 为每个泄露的块提供完整的堆栈跟踪,包括...

Global site tag (gtag.js) - Google Analytics