On 17/05/2010 18:36, Mark Shifman wrote:
> Hi Pid, et al:
>=20
> Things are curiouser and curiouser. I decided to deploy the struts blan=
k app after starting tomcat with startup.sh.
> Well there is no memory leak after undeploy and redeploy. If I start t=
omcat with jsvc, I get a memory leak.
> This is the minimal init script I used to start the tomcat daemon.
>=20
> snip..
> # Source function library.
> . /etc/init.d/functions
>=20
> # Adapt the following lines to your configuration
> JAVA_HOME=3D/usr/java/jdk1.6.0_18
> CATALINA_HOME=3D/home/vir6.0.26/apache-tomcat-6.0.26
> DAEMON_HOME=3D$CATALINA_HOME/bin
> TOMCAT_USER=3Dmas
>=20
> #CATALINA_OPTS=3D"-Djava.awt.headless=3Dtrue "
> #LOGGING_CONFIG=3D"-Djava.util.logging.config.file=3D$CATALINA_HOME/con=
f/logging.properties"
> #JAVA_OPTS=3D"-Djava.util.logging.manager=3Dorg.apache.juli.ClassLoader=
LogManager"
> CLASSPATH=3D\
> $JAVA_HOME/lib/tools.jar:\
> $CATALINA_HOME/bin/commons-daemon.jar:\
> $CATALINA_HOME/bin/bootstrap.jar
>=20
> start(){
> $DAEMON_HOME/jsvc \
> -jvm server \
> -user $TOMCAT_USER \
> -home $JAVA_HOME \
> -Dcatalina.base=3D$CATALINA_HOME \
> -Dcatalina.home=3D$CATALINA_HOME \
> -Djava.io.tmpdir=3D$CATALINA_HOME/temp \
> -outfile $CATALINA_HOME/logs/catalina.out \
> -errfile '&1' \
> -cp $CLASSPATH \
> org.apache.catalina.startup.Bootstrap
> echo "starting: " $CATALINA_HOME
> echo "tomcat user: " $TOMCAT_USER
> #
> # To get a verbose JVM
> #-verbose \
> # To get a debug of jsvc.
> #-debug \
> }
>=20
> stop(){
> # killproc jsvc
> # PID=3D`cat /var/run/jsvc.pid`
> # kill $PID
>=20
> $DAEMON_HOME/jsvc \
> -stop \
> -pidfile /var/run/jsvc.pid \
> org.apache.catalina.startup.Bootstrap
>=20
> echo "stopping tomcat: " $CATALINA_HOME
> echo "tomcat user: " $TOMCAT_USER
>=20
> }
>=20
>=20
> case "$1" in
> start)
> #
> # Start Tomcat
> #
> start
> ;;
>=20
> status)
> status jsvc
> ;;
>=20
> stop)
> #
> # Stop Tomcat
> #
> stop
> ;;
>=20
> restart)
> stop
> start
> ;;
>=20
> *)
> echo "Usage tomcat6.0.26 start/stop/restart/status"
> exit 1;;
> esac
>=20
> When I load the heap dump and do a classloaderexplorerquery using MAT I=
get this:
>=20
> Class Name | =
Defined Classes | No. of Instances
> -----------------------------------------------------------------------=
-----------------------------------
> org.apache.catalina.loader.WebappClassLoader @ 0x94977290 | =
260 | 186
> |- parent org.apache.catalina.loader.StandardClassLoader @ 0x94861d10| =
935 | 3,750
> |- org.apache.commons.beanutils.converters.ConverterFacade | =
| 54
> |- org.apache.commons.logging.impl.Jdk14Logger | =
| 38
> |- org.apache.commons.beanutils.converters.ArrayConverter | =
| 27
> |- org.apache.commons.beanutils.WeakFastHashMap | =
| 4
> |- org.apache.commons.beanutils.converters.BooleanConverter | =
| 4
> |- org.apache.commons.beanutils.converters.ByteConverter | =
| 4
> |- org.apache.commons.beanutils.converters.CharacterConverter | =
| 4
> |- org.apache.commons.beanutils.converters.DoubleConverter | =
| 4
> |- org.apache.commons.beanutils.converters.FloatConverter | =
| 4
> |- org.apache.commons.beanutils.converters.IntegerConverter | =
| 4
> |- org.apache.commons.beanutils.converters.LongConverter | =
| 4
> |- org.apache.commons.beanutils.converters.ShortConverter | =
| 4
> |- org.apache.commons.beanutils.converters.DateConverter | =
| 3
> |- org.apache.commons.beanutils.converters.BigDecimalConverter | =
| 2
> |- org.apache.commons.beanutils.converters.BigIntegerConverter | =
| 2
> |- org.apache.commons.beanutils.converters.ClassConverter | =
| 2
> |- org.apache.commons.beanutils.converters.FileConverter | =
| 2
> |- org.apache.commons.beanutils.converters.SqlDateConverter | =
| 2
> |- org.apache.commons.beanutils.converters.SqlTimeConverter | =
| 2
> |- org.apache.commons.beanutils.converters.SqlTimestampConverter | =
| 2
> |- org.apache.commons.beanutils.converters.StringConverter | =
| 2
> |- org.apache.commons.beanutils.converters.URLConverter | =
| 2
> |- org.apache.commons.beanutils.BeanUtilsBean | =
| 1
> |- org.apache.commons.beanutils.BeanUtilsBean$1 | =
| 1
> -----------------------------------------------------------------------=
-----------------------------------
>=20
> If in undeploy and redeploy the struts blank app and do a duplicate cla=
sses query I get this:
>=20
> Class Name | Count | D=
efined Classes | No. of Instances
> -----------------------------------------------------------------------=
---------------------------------
> org.apache.catalina.loader.JdbcLeakPrevention | 2 | =
|
> |- org.apache.catalina.loader.WebappClassLoader @ 0x948b5c38| | =
260 | 186
> |- org.apache.catalina.loader.WebappClassLoader @ 0x94958320| | =
260 | 186
> '- Total: 2 entries | | =
|
> org.apache.commons.beanutils.BeanAccessLanguageException | 2 | =
|
> org.apache.commons.beanutils.BeanUtils | 2 | =
|
> org.apache.commons.beanutils.BeanUtilsBean | 2 | =
|
> org.apache.commons.beanutils.BeanUtilsBean$1 | 2 | =
|
> org.apache.commons.beanutils.ContextClassLoaderLocal | 2 | =
|
> org.apache.commons.beanutils.ConversionException | 2 | =
|
> org.apache.commons.beanutils.ConvertUtils | 2 | =
|
> org.apache.commons.beanutils.ConvertUtilsBean | 2 | =
|
> org.apache.commons.beanutils.Converter | 2 | =
|
> org.apache.commons.beanutils.DynaBean | 2 | =
|
> org.apache.commons.beanutils.DynaClass | 2 | =
|
> org.apache.commons.beanutils.DynaProperty | 2 | =
|
> org.apache.commons.beanutils.MappedPropertyDescriptor | 2 | =
|
> Total: 14 of 260 entries | 520 | =
|
> -----------------------------------------------------------------------=
---------------------------------
>=20
> The struts 1.3.10 blank webapp is found here http://www.alliedquotes.co=
m/mirrors/apache/struts/examples/struts-1.3.10-apps.zip
> It is just a shell without much of anything except a welcome page.
>=20
> I am now worried that I have done something wrong with jsvc (which is w=
hy I included my startup script). I added
> -Djava.util.logging.config.file=3D$CATALINA_HOME/conf/logging.propertie=
s and
> -Djava.util.logging.manager=3Dorg.apache.juli.ClassLoaderLogManager to =
the script after snooping in catalina.sh.
> This made juli logging work but didn't get rid of the leak.
>=20
>=20
> Any ideas would be appreciated.
> mas
I'll have a play around a bit later, when I get some time.
p
>>>> --------------------------------------------------------------------=
-
>>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>>> For additional commands, e-mail: users-help@tomcat.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------=
>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>> For additional commands, e-mail: users-help@tomcat.apache.org
>>>
>>
>>
> mas
>=20
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>=20
|