Hi,

Wish someone could provide us insight to the following problem that we encounter. We 
have been trying for nearly two months now researching the web including this forum 
and trying out various suggestions but have been unsuccessful so far.

What we would like to know is that if there is a memory leak in our application, it 
should grow within the java heap and eventually give an out of memory error and crash 
the JVM. This is what I have known from the first day I got into Java and have always 
thought this to be correct. (until now)

We are running a Tomcat/5.0.27, 3 node cluster (on the same Windows Server 2003) and 
use the AJP13 connector to redirect requests from IIS 6.0 (running on IIS 5.0 
isolation mode) (tried with Tomcat 5.0.19 as well. The JVM :1.5.0-rc-b63 tried with 
1.4 as well) Using the recommended Oracle JDBC thin drivers for this version of the 
JVM, we connect to Oracle 9i which also runs on the same server.

The issue we are having is that the VM size for each of the Java.exe processes grows 
way beyond the max heap settings. (we understand that it will not be equal due to the 
JVM loading overhead)

For example, the heap settings is set to 512MB per tomcat/JVM instance but on Windows, 
it keeps growing to about 1.5 GB. This happens to each of the nodes and it goes into 
virtual memory and then eventually crashes and we have to restart the Tomcat cluster. 

Now I know with regard to Java application memory leaks, you got to check your 
programs. But what I want to know is that if there is a memory leak from our programs, 
it should eventually take the full java heap and then crash with an out of memory 
error. But that does not happen. In fact by monitoring the GC output, the heap seem to 
be working fine with each GC run increasing the free memory. In fact when we monitor 
the tomcat status page as well, we do see the java heap memory behaving correct. Also 
as I said, there are no out of memory errors in the log as well.

What I want to know is even if our program has a memory leak, it should crash the JVM 
right? It should not keep increasing the memory allocated from the Windows Server 2003 
O/S. 

Could this be a issue with the Windows server 2003 garbage collection as I read it is 
written using C#? anyone has any idea if this is the problem? 

Any help would be very much appreciated.

Thanks

Travis

Reply via email to