On 17/05/2010 18:36, Mark Shifman wrote:
> Hi Pid, et al:
>
> Things are curiouser and curiouser. I decided to deploy the struts blank app
> after starting tomcat with startup.sh.
> Well there is no memory leak after undeploy and redeploy. If I start tomcat
> with jsvc, I get a memory leak.
> This is the minimal init script I used to start the tomcat daemon.
>
> snip..
> # Source function library.
> . /etc/init.d/functions
>
> # Adapt the following lines to your configuration
> JAVA_HOME=/usr/java/jdk1.6.0_18
> CATALINA_HOME=/home/vir6.0.26/apache-tomcat-6.0.26
> DAEMON_HOME=$CATALINA_HOME/bin
> TOMCAT_USER=mas
>
> #CATALINA_OPTS="-Djava.awt.headless=true "
> #LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_HOME/conf/logging.properties"
> #JAVA_OPTS="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
> CLASSPATH=\
> $JAVA_HOME/lib/tools.jar:\
> $CATALINA_HOME/bin/commons-daemon.jar:\
> $CATALINA_HOME/bin/bootstrap.jar
>
> start(){
> $DAEMON_HOME/jsvc \
> -jvm server \
> -user $TOMCAT_USER \
> -home $JAVA_HOME \
> -Dcatalina.base=$CATALINA_HOME \
> -Dcatalina.home=$CATALINA_HOME \
> -Djava.io.tmpdir=$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 \
> }
>
> stop(){
> # killproc jsvc
> # PID=`cat /var/run/jsvc.pid`
> # kill $PID
>
> $DAEMON_HOME/jsvc \
> -stop \
> -pidfile /var/run/jsvc.pid \
> org.apache.catalina.startup.Bootstrap
>
> echo "stopping tomcat: " $CATALINA_HOME
> echo "tomcat user: " $TOMCAT_USER
>
> }
>
>
> case "$1" in
> start)
> #
> # Start Tomcat
> #
> start
> ;;
>
> status)
> status jsvc
> ;;
>
> stop)
> #
> # Stop Tomcat
> #
> stop
> ;;
>
> restart)
> stop
> start
> ;;
>
> *)
> echo "Usage tomcat6.0.26 start/stop/restart/status"
> exit 1;;
> esac
>
> When I load the heap dump and do a classloaderexplorerquery using MAT I get
> this:
>
> 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
> ----------------------------------------------------------------------------------------------------------
>
> If in undeploy and redeploy the struts blank app and do a duplicate classes
> query I get this:
>
> Class Name | Count | Defined
> 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 |
> |
> --------------------------------------------------------------------------------------------------------
>
> The struts 1.3.10 blank webapp is found here
> http://www.alliedquotes.com/mirrors/apache/struts/examples/struts-1.3.10-apps.zip
> It is just a shell without much of anything except a welcome page.
>
> I am now worried that I have done something wrong with jsvc (which is why I
> included my startup script). I added
> -Djava.util.logging.config.file=$CATALINA_HOME/conf/logging.properties and
> -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager to the
> script after snooping in catalina.sh.
> This made juli logging work but didn't get rid of the leak.
>
>
> Any ideas would be appreciated.
> masI'll have a play around a bit later, when I get some time. p >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >> >> > mas > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] >
signature.asc
Description: OpenPGP digital signature
