Hi,

Thanks again for your suggestions. I still don't have a good handle on the
problem. So please bear with me If I am asking the same questions again.

1. What I have noticed so far is the heap is not growing too much, but the
process foot print is growing. I used optimizeit memory profiler to compare
snapshots of the heap. I don't see any obvious memory leaks. I need to take
a closer look. When I checked this morning, the heap size allocated was 80MB
and heap used was 57MB (reported by optimizeit). But the memory sizes
reported by solairs pmap command is 

Size          RSS            Shared          Private
1173.45 MB    608.125 MB     15.125 MB       593 MB

I understand that the process footprint includes other data and would grow
as JVM itself grows. But is it normal that it grows to 1173 MB in a matter
of few hours. Ofcourse, optimizeit itself has overheads and adds to the
process size. But I have seen it grow to 2.5 GB in two days without
optimizeit when I was doing some stress tests. I read in one of the solaris
virtual memory architecture design paper, that virtual address space of a
process on solaris is 4GB. What will happen when the JVM process size
reaches 4GB? I guess my confusion is due to the lack of my understanding on
how java manages memory and how it relates to the OS-level memory
management. Are there any documents or white papers that discuss this kind
of issues?

2. I see that GC is running, reclaiming memory periodically. But I noticed
that after a while GC is running more frequently and each run takes a
substantial amount of time (in one instance GC took about 14 secs). This may
affect the throughput, but will it have any impact on the memory?

3. I read somewhere that if you use reflection,  the reflective data
structures (whatever that means) also contribute to the memory footprint. It
sounded as though these are not part of the heap. So if we are creating
instances of Method, Constructor, etc, are they not allocated in the heap?
We are using reflection heavily. 

Thanks
Anand


> -----Original Message-----
> From: Shapira, Yoav [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, November 04, 2004 4:55 AM
> To: Tomcat Users List
> Subject: RE: Huge tomcat memory footprint
> 
> 
> Hi,
> 
> >If there is a memory leak in our application, tomcat or 
> java, what are
> the
> >symptoms I should look for.
> >Will the heap usage (shown by visual GC, optimizeit etc) keep growing
> and
> >eventually reach the max limit set using -Xmx option to java?
> 
> Yes, the heap will keep growing and eventually reach the max, 
> at which point you will get OutOfMemoryErrors and 
> hung/unstable behavior.
> However, if your leak is small, it might take a very long 
> time before this situation is reached.
> 
> Run your app inside a profiler, conduct some operations 
> typical to your app, and then look at the heap.  Most 
> profilers now have features that show you object reference 
> trees, i.e. what objects are holding onto what references.  
> If you see stuff still in memory that you think shouldn't be 
> there, fix it.
> 
> Yoav
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to