Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Apache Tomcat »

Mem Leak / Too Many ServerCookie instances?

Brian Cross

2007-02-23


Hello, I have been trying to figure out the cause of a memory leak in my
web application that causes "java.lang.OutOfMemoryError: GC overhead
limit exceeded" and "java.lang.OutOfMemoryError: Java heap space" errors.
This happens about once a day after heavy load. I am using dumps from
jmap and jhat to parse the dump.

It seems like there are more instances of
org.apache.tomcat.util.http.ServerCookie than there should be and they
seem to be taking up a fairly big piece of memory. Usually there are
300 or so busy http threads, and there are 299 instances of
org.apache.tomcat.util.http.Cookies, but it looks like there are 4549
instances of ServerCookie, which seems weird to me.
I guess that is around 15 cookies per request. It looks like the
ServerCookie instances are taking up > 100 meg. Maybe this is totally
normal but I'm just starting with what is taking up the biggest chunk of
memory and going from there.
If anyone has any information or advice, I would really appreciate it.
Here is a trace down from the heap histogram. The >>> means I drilled
down into that class.


Heap Histogram

All Classes (excluding platform)
Class                                 Instance Count
  Total Size

class [B                                       56760
  614689141  >>>>
class [C                                     1124519
  312509218
class [I                                       107844
   92680628
class [Ljava.util.HashMap$Entry;              40941     26222864
class java.lang.String                         965281    
19305620
class [Ljava.util.Hashtable$Entry;              57747      7655160
class [Ljava.lang.Object;                       79781      
7227456
class java.util.HashMap$Entry                244617      6849276
class java.util.Hashtable$Entry                199424      
5583872
class [Ljava.lang.String;                        57062  
  5558752


   Referrers by Type


Class                                        
Instance Count

org.apache.tomcat.util.buf.ByteChunk         18696 (33%)
(203mb)      >>>>
[Ljava.lang.Object;                           11986
[[B                                             9990
java.nio.HeapByteBuffer                       6200
com.mysql.jdbc.Buffer                         2429
com.mysql.jdbc.Field                           2217


org.apache.tomcat.util.buf.MessageBytes      44576         >>>>


org.apache.tomcat.util.http.ServerCookie      22665         >>>>
org.apache.tomcat.util.http.MimeHeaderField  12480
org.apache.coyote.Request                     4488


[Lorg.apache.tomcat.util.http.ServerCookie;    4549        >>>>

org.apache.tomcat.util.http.Cookies              299        


Thanks again,

--Brian.

©2008 junlu.com - Jax Systems, LLC, U.S.A.