IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

libération des ressources (en scope=session)


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut libération des ressources (en scope=session)
    Bonjour, j'ai un petit pépin :

    Situation :
    Pour faire mes pages j'utilise du JSF mappé à des beans. Ceux-ci sont déclarés dans faces-config.xml avec managed-bean-scope = session.
    On utilise donc la même instance d'un bean tout au long de la session (1 bean par utilisateur tant que l'utilisateur n'a pas fermé son browser ou ne s'est pas déconnecté si j'ai bien compris)

    Problème :
    A la fermeture de mon InternetExplorer, les beans (les ressources) ne sont pas libérés. Je le vois car la méthode finalize n'est aps appelée. Du coup ça reste en mémoire, c'est pas cleané par le garbageCollector et au bout d'un certain nombre d'utilisateurs qui sont passés sur le site, je me prends des erreurs mémoires


    Quelqu'un sait comment faire pour que les sessions se ferment et relâchent les ressources ?

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    Salut,

    Le GC appellera la methode finalise() lorsqu'il va effacer l'object en memoire.

    Situation qui arrive s'il y a besoin de memoire et que ton object n'est plus reference autre part.

    Si tu as une reference qui pointe sur cet object, le GC ne l'effacera pas.
    Maintenant quand bien meme, tu n'aurais plus de reference, il est possible que de longue minutes passent avant que le GC retire l'object de la memoire.

    Tu peux si tu veux utiliser la fonction System.gc(); ou System.runFinalization(); pour forcer un cycle du GC ou les appels aux finalize() des objects marques comme etant a effacer, mais ceci n'est generalement pas recommande car les cycles du GC coute cher en temps CPU.

    Les JVM sont generalement assez bien optimisees pour savoir quand il faut le faire.

    ---
    Farid

  3. #3
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse :-)

    << Si tu as une reference qui pointe sur cet object, le GC ne l'effacera pas. >>

    Je pense que c'est en effet le problème, même si je pense ne pas avoir de référence dans mes objets à moi. Par contre, j'ai regardé, la HttpSession n'a pas l'air de subir de modification( genre isActive = false...) une fois que le navigateur se ferme
    --> je soupsonne le système de gestion des beans du FacesContext de garder le session en vie et donc de garder qq part un pointeur sur mes beans :-/

    chmurb

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    Autre chose que j'ai oublie de te dire !
    Les Sessions elles ne tombent pas des que tu fermes ton browser
    Elles ont une duree de vie qui est defini par default a une certaine valeur en seconds que tu peux changer avec :
    HTTPSession.setMaxInactiveInterval(int nbseconds);

    Tu peux aussi invalider un session via HTTPSession.invalidate();
    Par exemple a suite a un log out..

    ---
    Farid

Discussions similaires

  1. [C#]Libération des ressources
    Par ClaudeBg dans le forum Windows Forms
    Réponses: 11
    Dernier message: 16/01/2010, 20h37
  2. Forcer la libération des ressources sur un fichier
    Par piotrr dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 24/06/2009, 13h59
  3. [Excel] Libération des ressources Excel+lenteur d'exectution
    Par zalalus dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/11/2007, 09h06
  4. Réponses: 2
    Dernier message: 29/09/2007, 13h56
  5. libération des ressource d'une table
    Par dracula2000 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/06/2006, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo