我已經搜索並搜索了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