You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Arup Vidyerthy <li...@yahoo.co.uk> on 2005/07/20 18:04:34 UTC
FW: OutOfMemoryError & WebappClassLoader.openJARs(WebappClassLoader.java:1544)
Guys,
I have been experiencing an interesting problem lately with our production
servers.
We are running Tomcat 5.5.9 with 1.4.2_08 on Gentoo box. We have around 15
contexts (identical web application for 15 separate clients) inside weapps.
Our application is very XML/XSLT oriented. Our main third party hibernate,
axis, batik, struts, velocity and bunch of apache commons stuff. I have
identified the ones that can go in the shared/lib and put the rest in
WEB-INF/lib. I have attached two text files that list these two directory
listings.
Problem is every now and then we will see an OutOfMemoryError on the box
that looks similar to this:
java.lang.OutOfMemoryError
java.util.zip.ZipFile.open(Native Method)
java.util.zip.ZipFile.<init>(ZipFile.java:112)
java.util.jar.JarFile.<init>(JarFile.java:127)
java.util.jar.JarFile.<init>(JarFile.java:92)
org.apache.catalina.loader.WebappClassLoader.openJARs(WebappClassLoader.java
:1544)
org.apache.catalina.loader.WebappClassLoader.findResourceInternal(WebappClas
sLoader.java:1763)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLo
ader.java:1570)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.jav
a:850)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.jav
a:1299)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.jav
a:1181)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
com.mchange.v2.c3p0.impl.NewPooledConnection.handleThrowable(NewPooledConnec
tion.java:256)
com.mchange.v2.c3p0.impl.NewProxyStatement.executeQuery(NewProxyStatement.ja
va:52)
com.mchange.v2.c3p0.impl.DefaultConnectionTester.activeCheckConnection(Defau
ltConnectionTester.java:136)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.testPooledConnection(C3P
0PooledConnectionPool.java:156)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.refurbishResourceOnCheck
out(C3P0PooledConnectionPool.java:125)
com.mchange.v2.resourcepool.BasicResourcePool.attemptRefurbishResourceOnChec
kout(BasicResourcePool.java:1065)
com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResource
Pool.java:238)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C
3P0PooledConnectionPool.java:232)
com.mchange.v2.c3p0.PoolBackedDataSource.getConnection(PoolBackedDataSource.
java:94)
net.sf.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0Connect
ionProvider.java:33)
net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:292)
net.sf.hibernate.impl.SessionImpl.connect(SessionImpl.java:3373)
net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3333)
net.sf.hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.java:67)
net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java:784)
net.sf.hibernate.loader.Loader.doQuery(Loader.java:269)
net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader
.java:138)
net.sf.hibernate.loader.Loader.doList(Loader.java:1063)
net.sf.hibernate.loader.Loader.list(Loader.java:1054)
net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1554)
net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1531)
net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1527)
...
...
This to me indicates Tomcat is running out of memory when it tries to load
classes from a Jar. Has anybody seen this before? If anybody has, can you
please elaborate on it. Does it mean I I one too many jars. Bear in mind
that the libs in WEB-INF/lib directory will be loaded 15 times for 15
contexts. Is that where the problem could be coming from? Also, at this
point I thought I will tell you guys about my JVM parameters:
export JAVA_OPTS="-server -Xms512m -Xmx1000m -Xss256k"
export CATALINA_OPTS="-XX:MaxPermSize=300m -XX:+UseDefaultStackSize
-Djava.awt.headless=true"
I would be ever so greatful if anybody could shed any light or share their
experiences with me.
Kind regards...
Arup Vidyerthy