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

Interfaces Graphiques en Java Discussion :

Consommation mémoire en java


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de faico
    Inscrit en
    Août 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 242
    Par défaut Consommation mémoire en java
    Salam,
    Je developpe un jeu en java, mon probleme c'est que mon aplli consome bcp en memoire mais lorsque je reduit puis je restaure la fenétre la memoire occupé deminu à la moitié .
    Est ce que vous pouvais m'expliquer pour koi ?

    Et si j'instance une classe 2 fois ,ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Jlabel MyLabel;
    MyLabel=new JLabel(new ImageIcon("ico1.ico"));
    MyLabel=new JLabel(new ImageIcon("ico2.ico"));
    Est ce que l'espace occupé lors de la 1ere instantiation est recupérer ?
    Merci d'avance !

  2. #2
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut
    je pense que tu devrais essayer de mettre en cache les images surtout si tu les utilises plusieurs fois. Tu peux créer une HashMap avec pour clé le nom de l'image et pour valeur sa reference.
    Comme ça dés que tu veux atteindre l'image ou la créer, tu regardes dans la table de hashage si elle y est déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     HashMap mesImages = new HashMap();
    [...]
    if (mesImages.get(nomImage) != null)
    		{
    			return (ImageIcon) mesImages.get(nomImage);
    		}
    Si elle n'y est pas, il faut la créer et la mettre en cache dans la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mesImages.put(nomImage,referenceAl'imageQueT'asCréé);
    Je sais pas si ça te sera util mais bon j'aurai essayé

  3. #3
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Citation Envoyé par faico
    Est ce que l'espace occupé lors de la 1ere instantiation est recupérer ?
    Oui, c'est le role du Garbage Collector.

  4. #4
    Membre confirmé Avatar de faico
    Inscrit en
    Août 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 242
    Par défaut
    Salam,
    Mais mon probleme c'est que mon prog ne recupere cette espace que si je reduit ma fenetre ????

  5. #5
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut
    peut etre en obligeant le garbage collector à effacer l'ancien objet non referencé ?
    Mais d'aprés la FAQ, ça ne marcherait pas à tous les coups .

  6. #6
    Membre confirmé Avatar de faico
    Inscrit en
    Août 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 242
    Par défaut
    Salam,
    J'ai encore le mm prob

  7. #7
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    Je suis désolé, mais je ne suis pas du tout d'accord avec vous :

    1 - Le rôle du Garbage Collector n'est pas (il me semble) de distribuer la mémoire lors d'une instanciation, mais d'en libérer quand le besoin s'en fais sentir.
    Jlabel MyLabel;
    MyLabel=new JLabel(new ImageIcon("ico1.ico"));
    MyLabel=new JLabel(new ImageIcon("ico2.ico"));
    Rappelez-vous : on peut considérer java soit en "sans pointeur", soit en "tout pointeur". En l'occurence, le pointeur MyLabel, lors de la deuxième instanciation va désigner la même zone mémoire que lors de la première, l'Objet physique sera donc remplacé.

    2 - le fait de construire nue HashMap ne lui permettra pas d'obtenir 1 programmme léger en mémoire, tout au contraire. Reste à savoir quel facteur du rapport "volume mémoire / rapidité" faico veut privilégier.

    Pour la solution, je suis désolé mais je ne vois pas.

  8. #8
    Membre confirmé Avatar de faico
    Inscrit en
    Août 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 242
    Par défaut
    Salam,

  9. #9
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    salam :-)

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/11/2011, 14h00
  2. Consommer des services WSDL en Java
    Par M4v3rick dans le forum Services Web
    Réponses: 0
    Dernier message: 08/12/2010, 23h38
  3. Créer et consommer un web service en Java
    Par jawadev dans le forum Services Web
    Réponses: 1
    Dernier message: 20/11/2009, 11h25
  4. consommer un service web en java
    Par kat35 dans le forum Services Web
    Réponses: 3
    Dernier message: 14/10/2007, 19h59
  5. Comment consommer un web service en java
    Par Vins83 dans le forum Services Web
    Réponses: 1
    Dernier message: 16/01/2006, 23h33

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