tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Julian Löffelhardt <>
Subject Re: Memory Usage and Garbage Collection
Date Fri, 03 Jan 2003 01:01:58 GMT
Looking at the jasper source of tomcat 4.0.4 releasing jsp's seems to be
reasonable easy to implement:
The Jsp's classloader, the class and the actual jsp-servlet instance  are
all put together in a JspServletWrapper-Object which itself is stored in the
JspServlet (the Servlet used to executing jsps) using a Hashtable.
One could replace the hashtable with a LRU-Cache or anything.

Since each jsp is loaded using a separate classloader, removing the Wrapper
removes the reference to the instance, it's class and it's loader, which
should enable the class garbage collector to remove the class.

Do you think this approach is reasonable?
Does this part of the implementation differ with Jasper2?

This is a feature I could really use well.


----- Original Message -----
From: "Craig R. McClanahan" <>
To: "Tomcat Users List" <>; <>
Sent: Friday, January 03, 2003 1:12 AM
Subject: Re: Memory Usage and Garbage Collection

> On Thu, 2 Jan 2003, Brandon Cruz wrote:
> > Date: Thu, 2 Jan 2003 16:16:23 -0600
> > From: Brandon Cruz <>
> > Reply-To: Tomcat Users List <>,
> >
> > To: Tomcat Users List <>
> > Subject: Memory Usage and Garbage Collection
> >
> > Do loaded jsp pages and/or class files ever get garbage collected when
> > tomcat is running?
> >
> It's legal for servlet containers to destroy and release servlets and JSP
> pages while the server is running, but Tomcat doesn't currently do so.
> Once a servlet or JSP is loaded, it stays loaded until you reload that
> particular webapp or you shut Tomcat down.
> > We have a production server with several hundred virtual hosts per host,
> > each with a fair share of jsp pages and with moderate to low traffic per
> > host.  As time goes on, the amount of memory being used constantly
> > It starts off around 60MB, then goes higher and higher, getting up to
> > 100MB after a couple days.
> >
> > The regular GC seems to usually clean up around 2MB ([GC
> > 99493K->97502K(204544K), 0.0243521 secs]) and the Full GC seems to clean
> > less than that ([Full GC 97388K->97187K(204544K), 2.4269915 secs]).
> >
> > Since I have the -Xmx and -Xms set to 200MB, the 204544K number never
> > resized, but the number before the -> seems to slowly and steadily rise.
> >
> > Full GC seems to run quite often, every few seconds, GC runs once in a
> > while, but spits out about 50 lines at once every time it runs.  Is this
> > normal?  Shouldn't Full GC only run once in a while?
> >
> > I am starting to think that as classes and jsp's are loaded, they stay
> > memory and are never released until tomcat is restarted, which means
> > there is eventually a point where all the classes will load and I just
> > to have enough memory to support that without having to use swap space.
> >
> It's not just the classes -- it's the object instances created from those
> classes that take up space (the bytecodes of the class itself exist only
> once).
> > The problem occurs when the memory usage number before the -> gets up to
> > about 130.  The system is using swap space and eventually out of memory
> > errors start showing up.
> >
> > Any ideas?  More Ram, more tuning, different site architecture?
> >
> If you're using swap space, you probably have your max heap size (-Xmx)
> too large for the amount of physical memory that is available.  I'd
> definitely start by either reducing -Xmx or increasing the amount of
> physical RAM.  If reducing -Xmx gives you OutOfMemoryException errors,
> then increasing RAM is the only option.
> The second thing I'd do is review my applications for places where they
> might be maintaining references to data in between requests, either in
> instance variables of the servlet or JSP class or by keeping too many
> things in the user's session for too long.  If there are such references,
> your user data objects cannot be GC'd and you'll end up with exactly the
> pattern you describe (slowly increasing memory use).
> > Thanks in advance?
> >
> > Brandon
> Craig
> --
> To unsubscribe, e-mail:
> For additional commands, e-mail:

To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

View raw message