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.
> mas


I'll have a play around a bit later, when I get some time.


p


>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>>>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>>
>>
>>
> mas
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
> 


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to