DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10406>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10406 Tomcat Memory Management Summary: Tomcat Memory Management Product: Tomcat 3 Version: 3.2.3 Final Platform: All OS/Version: All Status: NEW Severity: Critical Priority: Other Component: Unknown AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Product: Java Web Application Operating system: Windows NT/2000 server, Linux, FreeBSD Web Server: IIS, Apache etc Application server: Tomcat 3.2.4 and above Database server: MySQL 3.23.49, MS-SQL, Oracle etc Java Architecture: JSP (presentation) + Java Bean (Business logic) We are currently hosting our web application using Tomcat 4 with IIS 5 on Windows 2000 server. We have also supplied our product to some of our customers who are hosting it on Linux using Tomcat 3.2.4 also. We have been facing the following problem for quite some time now. As more and more people are visiting and browsing the site, the Java.exe/Tomcat.exe size keeps growing and finally we end up with "Out of memory" error. Even if we leave the server inactive for hours, the memory doesn't get released and the only option is to restart the Tomcat server. We have posted this problem in many forums and in the Tomcat bug database also (both 3.* and 4). But we didn't get any solutions and also we were told that the problem could lie with our application. So, we decided to conduct a test with Tomcat example JSP pages, so as to see whether the memory is getting released properly with them at least. The memory.jsp contains the following code and all the example pages used had the same code embedded to find out the memory usage. memory.jsp: <% try { out.println("<table border=1><tr><td>Total Memory " + Runtime.getRuntime ().totalMemory()/1000 +" KB</td>"); out.println("<td>Memory in Use "+((Runtime.getRuntime().totalMemory()- Runtime.getRuntime().freeMemory())/1000) +" KB</td>"); out.println("<td>Thread Count " + Thread.activeCount() + "</td></tr></table>"); } catch(Exception ex) { out.println(ex); } %> Following is the result of the test done on Tomcat 4.03 as standalone server. Name Total memory Used memory Threads memory.jsp 4026 2744 22 examples/jsp/num/numguess.jsp 4026 3464 22 examples/jsp/num/numguess.jsp?guess= 4026 3704 22 examples/jsp/dates/date.jsp 4435 3054 22 examples/jsp/snp/snoop.jsp· 4435 3374 22 examples/jsp/include/include.jsp 4435 3953 22 examples/jsp/forward/forward.jsp 4599 3850 22 examples/jsp/plugin/plugin.jsp 4599 4176 22 examples/jsp/simpletag/foo.jsp 4730 2712 22 memory.jsp 4730 2977 22 After 30 mins (session timeout) memory.jsp 4730 3182 22 We felt, as in our application, the memory used by Tomcat doesn't get released fully even for Tomcat example JSP pages. We have repeated the same test many times, restarting Tomcat, deleting work folder, clearing browser cache every time. We have even tried the same after restarting the machine. The pattern is exactly the same barring variations of few bytes here and there. We repeated the same test on Tomcat 3.2.4 and the results were similar. Only the figures were different. Then, we decided to conduct the same test using JRun 3.1, so as to see whether the memory is getting released properly with it at least. Following is the result of the test done on JRun 3.1 as standalone server. Name Total memory Used memory Threads memory.jsp 2859 2451 2 examples/jsp/num/numguess.jsp 3731 2188 4 examples/jsp/num/numguess.jsp?guess= 3731 2339 4 examples/jsp/dates/date.jsp 3870 2150 4 examples/jsp/snp/snoop.jsp· 3870 2472 4 examples/jsp/include/include.jsp 3870 2010 4 examples/jsp/forward/forward.jsp 3870 2273 4 examples/jsp/plugin/plugin.jsp 3870 2006 4 examples/jsp/simpletag/foo.jsp memory.jsp 3870 2063 4 After 30 mins (session timeout) memory.jsp 3870 1957 2 We found out that the memory is getting released periodically and after 30 minutes of inactivity the memory is totally released and even the thread count is back to the original value. We have repeated the same test many times, restarting JRun, deleting tmp folder, clearing browser cache every time. We have even tried the same after restarting the machine. The pattern is exactly the same barring variations of few bytes here and there. Is it a Tomcat bug? If so, how can we get over this problem? Because, we need to support our application on Tomcat application server. -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>