我已经搜索并搜索了stackoverflow,很多但找不到答案。内存泄露 - Tomcat,Spring MVC
我有一个Maven,Spring MVC Web应用程序,连接到MySQL数据库。
的问题是,每次我重新部署的时间(停止,取消再部署)我的战争文件,我得到的日志文件中的下列情况除外:
SEVERE: The web application [/XYZ-0.0.0] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
SEVERE: The web application [/XYZ-0.0.0] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak.
+ -5重新部署后,我得到java.lang.OutOfMemoryError: PermGen space
错误,需要重新启动Tomcat - 有时我必须重启我的机器。
我已经看了:To prevent a memory leak, the JDBC Driver has been forcibly unregistered并试图选择3(不知道如何或什么移动到Tomcat的/lib
目录,即做我 '移动' 弹簧JDBC或使用mysql-connector-java吗?)
我已经实现了一个连接池,试图解决这个问题,但它没有帮助。
我使用Netbeans,但是我已经安装了Tomcat 7的'windows版本',即没有catalina.bat文件的版本,因此我无法启动并运行探查器。 (我想不重新安装Tomcat ...)
请帮忙 - 如何找到并修复内存泄漏?
你需要添加'classesToInitialize =“com.mysql.jdbc.NonRegisteringDriver”'来server.xml中的Listener声明。请看看http://stackoverflow.com/questions/24850091/the-web-application-registered-the-jdbc-driver-com-mysql-jdbc-driver-but-fa/24850221#24850221 – 2015-03-31 16:53:36
谢谢ksokol ,我已经尝试过了(将mysql-connector-java-5.1.30.jar移动到Tomcat 7.0 \ lib \,并在我的pom中将其标记为'provided'并编辑了server.xml文件),但Tomcat仍然警告内存泄漏当我部署,使用webapp,停止和取消部署。 – TungstenX 2015-04-01 07:46:44
我注意到,几分钟后内存“消失”,即如果我点击“查找泄漏”并发现泄漏,然后等待几分钟,然后再次单击它就没有泄漏。 – TungstenX 2015-04-07 10:02:33