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
