Hi all,

Antoine Levy-Lambert a écrit:

Hello Bruno,




Hi,

Bruno Dorel has contacted me off list concerning a problem of memory leak in the class ExtendedStore (src/share/org/apache/slide/store/ ExtendedStore.java).

Bruno, some comments about the new version of ExtendedStore.java that you mailed me :

1) we would like to avoid making incompatible API changes in public methods


This doesn't change any thing, you can compile Slide project without any error using removeObjectFromCache(Uri key) because the param "key" passed is allways an Uri



2) I do not understand why changing the signature of public void removeObjectFromCache(Object key) to removeObjectFromCache(Uri key) solves a problem. toString() should always return the toString() implementation of the object passed, so if the object is an Uri it should call Uri.toString().



I make some tries today and post you an anwser ASAP (I made some changes in Uri class so I have to check if it is not a side effect from the Uri class)




In the version of ExtendedStore.java that you mailed me, there are also some changes in logging behavior which should not be required.

What I noticed is that you want to change the default size of a number of caches. Maybe this is what really helps you fixing the memory issue ?


No , no it was just a quick change to see the behavoir of Uri Garbage Collection now I use Domain.xml to setup those values .


Is there a bug report in Bugzilla for this ? I would recommend opening one.


Yes  :

31924|New|Min|2004-10-27|Slide produces a lot of garbace objects and maybe




Best regards,

Antoine

On Feb 16, 2007, at 9:55 AM, Bruno DOREL wrote:


M. Levy-Lambert

Merci pour votre réponse :

En Utilisant JProfiler nous avons pu constater que des Objets Uri n'étaient pas recyclés et restaient en pile (heap) Nous avons trouvé une fuite mémoire dans la classe Extended store au niveau de la méthode removeObjectFromCache(Object key ) l'objet key passé en paramètre est en fait un Uri si l'on déclare le paramètre d'appel avec le type Uri les objets sont bien recyclés



   /**
     * Removes an object from all internal caches.
     *
* @param key the key under which the object is stored in the caches.
     *
     * BD/EADS the key is allways a Uri
* public void removeObjectFromCache(Object key ) { is a bug because java * calls Object.toString and not Uri.toString so removeObjectFromCache won't
     * remove anything
     *
     *
     */
    public void removeObjectFromCache(Uri key ) {
        if (getLogger().isEnabled(LOG_CHANNEL, Logger.DEBUG)) {
getLogger().log( "Removing " + key.toString() + " from cache.",
              LOG_CHANNEL,
           Logger.DEBUG );
        }
     if ( contentStore.cacheResults() && contentCachingEnabled ) {
      contentCache.remove( key.toString(), "_" );
     }
     if ( nodeStore.cacheResults() ) {
      objectsCache.remove( key.toString() );
     }
     if ( securityStore.cacheResults() ) {
      permissionsCache.remove( key.toString() );
     }
     // Locks shouldn't be cached, but just in case.
     if ( lockStore.cacheResults() ) {
      locksCache.remove( key.toString() );
     }
     if ( revisionDescriptorsStore.cacheResults() ) {
      descriptorsCache.remove( key.toString() );
     }
     if ( revisionDescriptorStore.cacheResults() ) {
      descriptorCache.remove( key.toString(), "-" );
     }
    }


qu'en pensez vous ? j'ai joint le fichier extendedKeyStore tel que nous l'avons codé aujourd'hui (il prend en compte d'autres modification qui feront l'objet de mes prochains mails

en attendant une réponse

Cordialement

B DOREL


<ExtendedStore.java>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

--------------------------------------------------------------------------------------- Orange vous informe que cet e-mail a ete controle par l'anti-virus mail. Aucun virus connu a ce jour par nos services n'a ete detecte.








---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to