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

Langage Java Discussion :

Allocation Memoire et stratégie de déréférencement


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut Allocation Memoire et stratégie de déréférencement
    J'ai été confronté à un problème de mémoire (Occupation cumulative de la mémoire jusqu'a HeapStack).

    Schématiquement mes composants n'étaient pas ramassés car des références persistaient dans des ArrayList,
    ou des class de service étaient référencées dans des PropertyChangeListener.

    Bref après analyse du code et utilisation de jconsole et MAP je me suis résolus à coder un mécanisme de déréférencement des composants et des class de services.

    J'ai implémenté une méthode dispose() pour tous ces objets ainsi que la méthode finalize().

    Les méthodes dispose() sont appelés en cascade et de manière hiérarchique.
    Les Méthodes finalize() moucharde la destruction réelle des objets lors du déclenchement du Gc.

    Questions :
    Est-ce la bonne solution ?
    Avez-vous été confronté à ce type de problème ?
    Comment l'avez vous résolus ?
    J'utilise 2 polices avec une dizaine de taille celles-ci prennent environ 1Mo de mémoire soit 45% de la mémoire disponible initialement. peut-on réduire cette occupation ?

    Merci de vos réponses.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par william44290 Voir le message
    Schématiquement mes composants n'étaient pas ramassés car des références persistaient dans des ArrayList,
    Pourquoi était-il stocker dans des listes ????
    Citation Envoyé par william44290 Voir le message
    ou des class de service étaient référencées dans des PropertyChangeListener.
    Si ta classes est référencé comme listener sur un composant existant, alors c'est normal que le GC ne la détruise pas puisqu'il est toujours valide.


    Citation Envoyé par william44290 Voir le message
    Les Méthodes finalize() moucharde la destruction réelle des objets lors du déclenchement du Gc.
    Attention car finalize() peut retarder le processus de libération...


    Citation Envoyé par william44290 Voir le message
    Est-ce la bonne solution ?
    Il faudrait d'abord éviter de stocker des éléments "temporaires" dans des listes "globales" Pourquoi fait-tu cela ?

    Plus généralement il faut essayer de limiter au maximum le scope des références, afin de faciliter le travail du GC.


    a++

  3. #3
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    J'ulise des listes de composants dans le cadre d'un frameWork.

    Structurellement j'ai N class métier ou j'instancie des composants et je valorise des property.(d'un coté)

    (et de l'autre) une class de service qui peut parcourir une liste de composants pour gérer leurs apparences en fonction d'un context ou traiter le contrôle de saisie ou bien encore la circulation du focus par exemple.

    J'ai développé un JTable générique. il me suffit d'ajouter un composant dans sa liste d'édition pour que la colonne devienne éditable. Le code du JTable n'est jamais modifié mais c'est la fiche métier qui détermine quelles colonnes seront éditables. Idem pour l'ordonnancement, la présence ou pas d'une colonne dans la liste.

Discussions similaires

  1. Allocation memoire et management de la memoire
    Par micamused dans le forum C++
    Réponses: 9
    Dernier message: 16/11/2005, 09h07
  2. probleme avec les allocations memoires
    Par david35 dans le forum C
    Réponses: 5
    Dernier message: 21/10/2005, 11h49
  3. allocation memoire
    Par suckthewindow dans le forum C++
    Réponses: 2
    Dernier message: 18/10/2005, 14h57
  4. Réponses: 13
    Dernier message: 05/01/2004, 19h00
  5. Allocation memoire Limité avec TurboC
    Par sebastien51 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 15/10/2003, 23h32

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