Hi,

I was recently hunting what I thought to be a memory leak in our
application. What happens is that the Old Gen Space is running full at
once and then tomcat freezes
because java is busy with Full GC all the time. I've managed to create
a memory dump shortly before the crash and the top5 looked like that:

14481362 instances of class org.apache.tomcat.util.buf.ByteChunk
14471293 instances of class org.apache.tomcat.util.buf.CharChunk
14464658 instances of class org.apache.tomcat.util.buf.MessageBytes
7113296 instances of class org.apache.tomcat.util.http.MimeHeaderField
7080192 instances of class javax.servlet.http.Cookie

Other classes looked as normal (I was making jmap histograms all the
time and comparing).

Now, the funny thing is that all that data was bound to ONE request. I
checked the manager status page previously and it showed only one
active request, but lasting more than 5 hours:

S    18757746 ms    0 KB    0 KB    XXX.XXX.XXX.XXX   www.site.com
POST /searchboxright.html?linkId=XXX|SearchBoxRight|NA| HTTP/1.1

By analyzing the dump I found that all MimeHeaderFields were in one
large array belonging to one response object, belonging to the
request, with remote ip equal to the XXX.XXX.XXX.XXX ip of the request
in the manager.

I understand that sicne the request lasted 5 hours all the data went
into old space filling it out and causing the problem, but HOW can it
actually happen that a response object contains 8.000.000 mime
headers?

regards
Leon

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to