jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jukka Zitting (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JCR-625) Memory is not freed up when jackrabbit-server war is redeployed in tomcat
Date Tue, 07 Nov 2006 16:42:51 GMT
    [ http://issues.apache.org/jira/browse/JCR-625?page=comments#action_12447853 ] 
Jukka Zitting commented on JCR-625:

I don't really like the idea of having to use a separate thread to do this. Can't the various
caches just call the CacheManager whenever an object is placed in the cache. You can amortize
the performance hit by requesting reallocation only every N caching operations. This structure
would avoid the need to manage a separate thread.

Also, it would be cleaner if you passed around a factory object instead of the CacheManager.
That would make it much easier to plug in alternative caching behaviours. Something like this:

    public interface ItemStateCacheFactory {

        ItemStateCache newItemStateCache();



    public class ManagedMLRUItemStateCacheFactory {

        private final CacheManager manager;

        public ManagedCacheFactory(CacheManager manager) {
            this.manager = manager;

        public ItemStateCache newItemStateCache() {
            ItemStateCache cache = new MLRUItemStateCache();
            return cache;


> Memory is not freed up when jackrabbit-server war is redeployed in tomcat
> -------------------------------------------------------------------------
>                 Key: JCR-625
>                 URL: http://issues.apache.org/jira/browse/JCR-625
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>         Environment: No released version is affected, only trunk: svn revision 471800.
>            Reporter: Marcel Reutegger
>            Priority: Minor
>         Attachments: cacheManager3.txt
> This bug was introduced with the new CacheManager feature. See JCR-619.
> The CacheManager starts a new background thread which optimizes memory distribution every
second accross the various caches. When a jackrabbit repository is shutdown, this background
thread is still running and prevents the GC from collecting the classloader when jackrabbit
is deployed in a web application.
> Steps to reproduce:
> 1) build jackrabbit and jcr-server from trunk and deploy into a tomcat
> 2) touch the web.xml file of the jcr-server web app (this will force a redeployment)
> After step 2 two things may happen. Either:
> - The memory consumption increases because the CacheManager thread is not shutdown
> or
> - The CacheManager thread dies unexpectedly with a NullPointerException:
> Exception in thread "org.apache.jackrabbit.core.state.CacheManager" java.lang.NullPointerException
>         at org.apache.jackrabbit.core.state.CacheManager.run(CacheManager.java:90)
>         at java.lang.Thread.run(Unknown Source)

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message