日期:2014-05-20  浏览次数:20671 次

还是tomcat内存回收的问题
我在公司远程服务器上和本地都安装了tomcat6.0相同的版本,而且上面都部署了6个项目,都是STRUTS+HIBERNATE
开发的.
服务器采用的IIS6与tomcat整合,每个项目单独的虚拟目录.最近出现tomcat内存只增不减最后导致溢出问题,我按照网上说的,加大初始与最大内存,可问题没有解决,我也检查了session,应该是都关闭了,并且关闭前也清空了session缓存.
而让小弟不明白的是,我在本地启动TOMCAT(内部部署项目与远程相同)时,占用内存远远小于远程服务器上,而且明显看到内存回收,几分钟不访问tomcat内存会释放到几M,可是在服务器上我作了专门的测试,在没有其他访问的情况下.3个小时内tomcat占用系统内存始终内存峰值不下.请问大家有没有知道问题出在哪里?
小弟还有一个问题,公司服务器只有1G内存,上面配了几十个ASP项目,一直运行良好,而JAVA项目我只部署了6个,TOMCAT启动就占用70M内存,而且随访问增加而增加,照这样计算,在放几个项目,tomcat占用内存可能就要达到极限,(因为服务器内存过小,tomcat可用内存根本达不到设置的最大内存通常到250M左右tomcat就会当掉了)请问大家有没有这样的问题?


------解决方案--------------------
我以前遇到类似问题, 结果是没有释放数据库连接, 本地测试的时候可能达不到并发数量.
------解决方案--------------------
一般内存不释放往往就是跟数据库有关的, 内部测试通常无法测试出这种问题, 建议你白盒法看看你的代码, 是否操作数据库连接不释放的原因. 这跟新上传与否关系不打, ASP是调用ADO建立数据库的, 所以会自动关闭连接, 所以几十个asp项目都不会有这种问题.