使用tomcat内存释放问题

03-09-01 simm
在使用tomcat4 + sql server2000的应用系统开发中,发现服务器的java进程所占用的内存扑扑的往上涨,最终是java.lang.OutOfMemoryError!
数据库联接使用的是tomcat的连接池,该关掉的conn、stmt、rs都有close。
高手请帮忙诊断!

bullboss
2003-09-01 16:59
用的jdk 1.4 ??

banq
2003-09-02 09:37
典型的内存泄漏,使用Borland的optimizeit查找吧。

simm
2003-09-02 10:02
是jdk1.4;
optimizeit?还请详细说明,谢谢!

raynix
2003-09-02 16:53
你的代码中可能有本应短期存在的obj,但是却被一个长生命期的ref引用着,因此gc无法回收这个obj。多半跟静态对象有关。

robbin
2003-09-02 17:09
曾经听说MS SQL Server的官方驱动有内存泄漏的bug,不知道是不是这个原因。

cute
2003-09-02 17:36
绝对 是资源没有释放..用完后要服null

simm
2003-09-03 16:01
原来在sql server的进程信息中监测到有多余的连接没有释放掉,经过处理后数据库联接数正常,但java.exe进程的内存使用还是没有降下来。
不知道是哪里的内存没有释放了?:(

yuchao
2003-09-27 10:23
怎么解决的?

kitta
2003-10-06 04:26
我的系统是Redhat 9,Mysql 3, Tomcat 4, JDK 1.4。
也出现类似问题:
所有服务重新启动后,经过一段时间(不定,3-7天)就会出现无法获取数据库连接的异常。据说是tomcat的问题,我不太清除,望能指点迷津。

anonymous
2003-10-06 16:57
是因为MySQL的问题(mysql会自动做备份,备份期间,连接会挂起,然后就会出问题。。。没有找到解决办法,也许每天定时重起dbcp 是个不错的主意)

fightplane
2005-01-11 09:56
jvm内存不够会向系统申请,并且申请后的内存不再返回系统。除非重新启动应用服务。其内存上限可以在启动文件中设置。