Dear Chris,
I just wrote a small post about memory leaks
http://java-monitor.com/forum/showthread.php?t=150 In that post I
also
talk about the difference between maximum memory and committed
memory.
Note that in the memory usage graph you show, the leak is certainly
not
"easy to spot". In fact, that memory graph looks perfectly healthy to
me: lots of little GCs and a full GC every 18 hours or so. The reason
the memory curve looks good to me is that, after every full GC, the
amount of used memory is lower than the previous full GC. Unless you
have the graph labeled incorrectly, this graph looks good to me.
PS MarkSweep "overtakes" PS Scavenge late on the 12th because the
JVM is
doing a full GC, rather than the frequent incremental GCs that it
always
does. This does not "signal an impending out of memory situation".
Uhm. The memory drops every 18 hours because the system had locked up
with OOME's and I reboot it. On top of that, the memory is filled up
to well over 90% of the max memory. In systems that fill up and then
use full gc's to remedy it, the memory allocation usually peaks around
80% or so.
I have a graph that looks pretty much just like yours: used memory
bounces between 30MiB and 160MiB with a fixed maximum of 192MiB,
incremental GCs all the time which makes the long-view of the graph
seem
"fuzzy", and full GCs every 30 hours or so. The full GC takes the used
memory from ~160MiB all the way down to maybe 40MiB (that's a lot of
garbage!). This went on for 6 weeks until I decided to stop graphing
it
because I was convinced that my new memory settings were sufficient (I
had recently run out of memory when running with the default 64MiB
heap).
This is what I see on anther host. Nothing to worry about, indeed.
What is a MiB, how is it different from MB?
I *do* recommend setting the min and max heap sizes to the same value:
this allows the JVM to used fixed generation sizes and not waste its
time re-allocating and re-arranging the whole heap whenever it's going
to expand it. If you don't need a huge heap, why even set it as the
maximum? If /do/ need a huge heap, why not allocate it all at once?
Hmm. Good point. Especially on machines that have no other tasks than
running that particular JVM.
--
Kees Jan
http://java-monitor.com/forum/
kjkos...@kjkoster.org
06-51838192
Human beings make life so interesting. Do you know that in a universe
so full of wonders,
they have managed to invent boredom. Quite astonishing... -- Terry
Pratchett
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org