Wiki
Clone wikiBibSonomy / development / MemoryLeak
NOTE: Might be deprecated since most of the links refer to Tomcat 5.5 related issues
General URLs:
- http://www.bibsonomy.org/user/jaeschke/memory
- http://ampedandwired.com/2008/05/09/causes-of-java-permgen-memory-leaks/
- Tomcat Classloader-HOWTO: Good description of the loading process http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html
- http://mail-archives.apache.org/mod_mbox/tomcat-users/200808.mbox/%3C48B6F49C.4090306@kippdata.de%3E states that DBCP-relevant stuff resides repackaged in naming-factory-dbcp. I fear we declared the wrong package in context.xml ...
- http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html "Preventing DBCP connection pool leaks", also http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html ... important: dataSourceFactory in context.xml has to be org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory, not org.apache.commons.dbcp.BasicDataSourceFactory !
Bugs in libraries
- iBatis
- MySQL
To do
- Configure mail-handling correctly, see http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html
- also delete mail.jar from the webapp/tomcat ... the POM of the webapp should only contain scope=test
- fix JabRef
- done repackage Mallet
Adapt Tomcat
- copy xercesImpl-2.9.1.jar to common/lib
- copy mysql-connector-java-5.0.8.jar to common/lib
- mysql-connector-java-5.0.8.jar and mysql-connector-java-5.1.7.jar are not compatible - 5.1.7 does not contain ResultSet any more!
- the mysql-driver has to reside in common/lib (not in WEB-INF/lib), otherwise the DBCP cannot load the class
hence common/lib should look like this:
#!java commons-el.jar commons-logging-1.1.1.jar jasper-compiler.jar jasper-compiler-jdt.jar jasper-runtime.jar jsp-api.jar log4j-1.2.14.jar mysql-connector-java-5.0.8.jar naming-factory-dbcp.jar naming-factory.jar naming-resources.jar servlet-api.jar xercesImpl-2.9.1.jar
#!java bibsonomy-util-2.0.1.jar catalina-ant.jar catalina-ant-jmx.jar catalina-cluster.jar catalina.jar catalina-optional.jar catalina-storeconfig.jar commons-modeler-2.0.1.jar servlets-cgi.renametojar servlets-default.jar servlets-invoker.jar servlets-ssi.renametojar servlets-webdav.jar tomcat-ajp.jar tomcat-apr.jar tomcat-coyote.jar tomcat-http.jar tomcat-jkstatus-ant.jar tomcat-util.jar
#!java org.apache.commons.dbcp.BasicDataSourceFactory
to
#!java org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory
and inser the following listener
#!java <!-- rja, 2009-01-29; cleans up the MySQL cancellation timers. See source for more info --> <Listener className="org.bibsonomy.util.tomcat.listener.CleanupListener" dbUrl="jdbc:mysql://gromit/bibsonomy?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8&zeroDateTimeBehavior=convertToNull&enableQueryTimeouts=false" dbUser="bibsonomy" dbPass="***" <!-- no changes to this line... "***" means keep the pass as it was --> />
Updated