tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pid <...@pidster.com>
Subject Re: JAXBContext leaks memory
Date Mon, 17 May 2010 17:51:08 GMT
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



Mime
View raw message