tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Warnier>
Subject Memory pool "Survivor space"
Date Sun, 30 Nov 2008 14:54:00 GMT

I am monitoring a Tomcat during startup, using jconsole.
This Tomcat's JVM is started with the switches "-Xms200M -Xmx200M", and 
it starts a rather heavy webapp that just about occupies Tomcat 100% 
during 5 minutes whenever I start it. (*)

In the "memory" tab of jconsole, I observe that one of the display 
sections (Survivor space, the middle bar in the "Heap" section),
has the following behaviour :

- before the application is started, it remains constant at about 1 Mb
- as soon as I start the application, it grows to about 2 MB, then drops 
down to 0, then grows up again to 2Mb, then drops to about 1 Mb, then 
back up again, etc..
The 2 Mb seems to be some kind of "hard limit", because it nevers goes 
over it.
The "bottom" is more variable, sometimes between 1 Mb and 0, but more 
often 0.
- when the application has finished loading (and Tomcat becomes 
responsive again), the amount of memory used by the Survivor space seems 
to stabilise again at 1.3 Mb, which is 0.3 Mb more than it was before 
the application started. Then it slowly over time drops down to 1 Mb.

If the attachment survives this post, then you can see this graphically 
in it. If not, you can get a snapshot here :

What I would like to know is :
- what does this mean ?
- where does the JVM get this apparent hard limit of 2 Mb for this pool 
size ?
- does it matter ? I mean, assuming I could change it, would that have 
an impact in how the JVM works while starting this application, and how ?

Below are three "cut and paste" of the summary display at the bottom 
left of jconsole when displaying this pool.

1) at some point during app startup
2008-11-30 15:27:24
         0 kbytes
     2.240 kbytes
     2.240 kbytes

2) also during app startup
2008-11-30 15:28:33
     2.240 kbytes
     2.240 kbytes
     2.240 kbytes

3) after app is started
2008-11-30 15:34:32
     1.306 kbytes
     2.240 kbytes
     2.240 kbytes

(*) to be completely precise :

- if I use <load-on-startup> in the web.xml of this application (no 
matter with which value), then it seems to get started when Tomcat is 
started. Whenever that happens, Tomcat becomes unresponsive during 
approximately 5 minutes, using 95% of the machine's cpu time and not 
answering HTTP requests.
At the end of these 5 minutes, Tomcat writes "server startup in .... ms" 
in its catalina.out file, and it becomes responsive again to HTTP requests.

- if I do not have a <load-on-startup> tag in web.xml, then Tomcat 
prints "server startup in .... ms" in catalina.out, and becomes 
responsive in about 15 seconds (instead of 5 minutes).
But then, it is when I first request the application in the browser that 
Tomcat becomes irresponsive during 5 minutes and uses 95% of cpu time 
during these 5 minutes.

View raw message