Je travaille sur une application dont l'arborescence de navigation est un bean session. Chaque fois que j'appelle la page contenant ce bean, mon utilisation de la mémoire augmente. Cependant, après quelques heures d'inactivité, la mémoire n'est toujours pas libérée. Y a-t-il des idées pour lesquelles cela se produit ou des solutions de contournement?Utilisation de la mémoire JSF Problème lors de l'utilisation de beans de session
Répondre
Vous pouvez définir explicitement un délai d'attente de session dans le descripteur de déploiement ou le faire par programmation (bien que vous ne souhaitiez probablement pas le faire dans une application JSF).
Finalement, c'est dans le contrôle du conteneur - le serveur gère quand libérer des ressources indépendamment des paramètres d'expiration logique.
Vous pouvez aider à diagnostiquer ce qui se passe à l'aide d'écouteurs. Par exemple, vous pourriez avoir votre classe de haricots implémenter HttpSessionBindingListener. Il sera notifié quand il est ajouté ou retiré d'une session. Vous pouvez également regarder tous les événements de session en utilisant un HttpSessionAttributeListener (JSF peut utiliser la session pour gérer l'état de la vue, alors attendez-vous à des entrées que vous n'avez pas définies vous-même). Le HttpSessionAttributeListener est défini dans le web.xml:
<listener>
<display-name>MyListener</display-name>
<listener-class>
somepackage.MySessionDiagnosticListenerImpl
</listener-class>
</listener>
Si vous êtes juste de quitter le serveur inactif, il peut juste être qu'il appuie d'autres demandes de session pour déclencher le nettoyage de la session a expiré et vous observez un détail d'implémentation. Ou vous pouvez perdre la mémoire parce que vous avez défini une référence à l'objet dans une classe non gérée.
Vous avez vraiment besoin d'utiliser un profileur pour savoir ce qui se passe dans la mémoire d'une application Java. Le profileur d'éclipse est plutôt bon.
S'il s'agit d'un bean de session, il ne doit pas être instancié pour chaque hit de la page dans la même session.
Vous devez également garder à l'esprit que le GC ne collectera pas les classes immédiatement. Et le GC ne dépend pas nécessairement du temps.
- 1. Problème de simultanéité JSF
- 2. Problème de session lors de l'actualisation
- 3. Utilisation de la mémoire
- 4. Problème de mélange JSF/JSP
- 5. Utilisation de la mémoire IronPython
- 6. Utilisation de la mémoire SQL
- 7. Lorsque vous utilisez des beans de session en façade, pourquoi utiliser également des beans de session métier?
- 8. Utilisation de la mémoire + .net
- 9. Utilisation de kaptcha avec JSF
- 10. Utilisation de la mémoire de JBoss?
- 11. Portillon, pile de pages et utilisation de la mémoire
- 12. ouverture de session automatique sur SEAM + JSF
- 13. Utilisation de la mémoire dans la R
- 14. Utilisation de Spring AOP dans une application JSF
- 15. Fils dans les beans session
- 16. Comet, responseText et utilisation de la mémoire
- 17. Problème de cryptage de données JSF
- 18. CoreData problème de gestion de la mémoire
- 19. Utilisation de la mémoire VS. Utilisation du processeur dans l'iphone
- 20. Pourquoi regrouper les beans de session sans état?
- 21. Quel est le problème avec la liaison de beans
- 22. JSF grains de portée de la session avec la navigation par onglets
- 23. Utilisation de JavaScript avec JSF et Facelets
- 24. Comment énumérer et initialiser les beans au printemps/jsf
- 25. C#: utilisation de la mémoire d'un objet
- 26. Utilisation de la mémoire Visual Studio 2005
- 27. Est-ce un problème de gestion de la mémoire lors de l'utilisation de plusieurs threads?
- 28. Utilisation de Rack :: Session :: Datamapper
- 29. JSF: Éviter les conflits de variables de portée de session lors du lancement de 2 instances d'une application
- 30. Utilisation de Session [] avec chargement de page