Wie lösen memory-leak-Probleme?
Ich habe ein problem mit Faden-und memory-leak...In der log von meinem Tomcat7 fand ich diese Zeilen über meine grails-Anwendung:
SEVERE: The web application [/myApp] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.
May 16, 2012 6:02:10 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/myApp] appears to have started a thread named [pool-63-thread-1] but has failed to stop it. This is very likely to create a memory leak.
May 16, 2012 6:02:10 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/myApp] appears to have started a thread named [pool-63-thread-2] but has failed to stop it. This is very likely to create a memory leak.
May 16, 2012 6:02:10 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/myApp] appears to have started a thread named [pool-63-thread-3] but has failed to stop it. This is very likely to create a memory leak.
May 16, 2012 6:02:10 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/myApp] appears to have started a thread named [pool-63-thread-4] but has failed to stop it. This is very likely to create a memory leak.
May 16, 2012 6:02:10 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/myApp] appears to have started a thread named [pool-63-thread-5] but has failed to stop it. This is very likely to create a memory leak.
May 16, 2012 6:02:10 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/myApp] appears to have started a thread named [pool-63-thread-6] but has failed to stop it. This is very likely to create a memory leak.
May 16, 2012 6:02:10 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/myApp] appears to have started a thread named [pool-63-thread-7] but has failed to stop it. This is very likely to create a memory leak.
mehr von denen...
Das problem ist, dass ich denke, dass alle diese threads erstellt werden, in der ein Teil der Anwendung entwickelt von einem 3th-party-JAR-Datei die ich habe nicht die Quelle, und ich kann nicht ändern durch mich.
Gibt es einen Weg, es zu lösen, oder zumindest zu verstehen, was ist nicht gut?
Dank
Hatte das selbe problem auch einmal, habe nicht wirklich eine Lösung zu finden, aber es immer noch gut funktioniert. Wer weiß, ob das abstreifen des Krieges-Datei-Größe eine Auswirkung?
InformationsquelleAutor rascio | 2012-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die erste Zeile weist auf einen Fehler in der MySQL-JDBC-Treiber. Sieht aus wie es ' s wurde behoben, der in 5.1.6 - siehe http://bugs.mysql.com/bug.php?id=36565 so könnte man versuchen, anstelle der jar-das neueste aus http://dev.mysql.com/downloads/connector/j/
Die anderen Linien zeigen, dass ein ThreadPool, der gestartet wurde, und nicht gestoppt, wenn die Anwendung beendet.
Dies kann nur behoben werden durch ändern der source-code von Dritten Glas, wenn das ist, wo das problem ist.
Wenn möglich, könnten Sie versuchen, vorübergehend den Wegfall der Drittanbieter-jar um zu sehen, ob das Problem verschwindet.
Ich aktualisierte den mysql-jdbc-Treiber auf die neueste aber es hat das problem nicht lösen. Ich bin noch immer die gleiche MySql-Fehler.
MYSQL-Fehler Lösung : Aktualisierung der mysql-version 5.1.27 oder höher
Leider ist der zweite link zeigt nur version 5.1.45; nicht sicher, warum 5.1.6 nicht veröffentlicht.
wirklich? Wie verwunderlich, dass über 5 Jahre später, ist der ursprünglich zitierte version ist nicht die neueste...
InformationsquelleAutor GreyBeardedGeek
Für die ThreadPool-problem, die Lösung, die ich verwendet (und es scheint zu funktionieren) war :
ServletContextListener
contextDestroyed
Methode, mittels Reflexion, die ich rufen Sie die close-Methode des DataSource - in meinem Fall, es scheint zu funktionieren mit c3p0 und DBCPcom.mchange.v2.c3p0.DataSources.destroy
(dataSource);InformationsquelleAutor Marian Ion