Bonjour à tous,
J'ai une application web JAVA qui tourne sur un serveur glassfish. Je recontre une montée en charge du cache régulièrement qui provoque un fort ralentissement de l'application. Cette problématique me force à redémarrer le serveur (ou l'application) quotidiennement pour revenir à une utilisation normale.
J'utilise le framework JPA EclipseLink pour lequel j'ai défini une politique de gestion du cache par entité à l'aide de l'annotation @Cache et de l'option expiry. Cela permet de définir une durée de vie à l'objet dans le cache. Une fois la durée de vie de l'objet dans le cache atteinte, celui-ci ne se supprime pas et ne libère pas la mémoire. Il devient uniquement 'inactif' et oblige l'application à recharger sa valeur depuis la base de données lors de son prochain appel.
Voici la manière dont j'ai défini la politique de cache au sein de l'objet.
Dans mon fichier persistence.xml, j'ai ajouté :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 @Entity @Cache( expiry=temps en ms ) public class MaClass implements Serializable{ ... }
Avez-vous, s'il vous plaît, une idée de comment forcer la suppression de l'objet et la libération de la mémoire une fois la durée d'expiration atteinte ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <shared-cache-mode>DISABLE_SELECTIVE</shared-cache-mode>
Je vous remercie d'avance pour vos conseils et solutions.
Partager