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

avec Java Discussion :

Gestion de la mémoire


Sujet :

avec Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Gestion de la mémoire
    Bonjours,

    Je travail actuellement sur un projet de visualisation de photos.

    Mon probleme est que pour se faire, j'ai besoin d’énormément de mémoire vive !
    L'affichage d'une simple photo me prend 200mo au bas mot...

    Et bien que cela ne soit pas "trop", au bout de plusieurs images ouvertes je passe rapidement la bar du Go !

    Sur mon ordi de boulot, pas de souci, mais cette appli est destinée a de petit ordi qui pourrait moins bien le prendre...

    D'ou mes questions :
    - Comment fixer un maximum de RAM a la JVM même si cela doit la faire planter pour voir comment elle s'en sort ?
    - Peut on réellement forcer la JVM a faire de la place ? (car ici, après un flush des images et set a null bien comme il faut, suivit d'un appel du gc, bah... pas grand chose ne change)
    - Enfin, bien que j'ai fais pas mal de recherche sur le sujet je n'ai rien trouvé sur le comportement de Java par rapport aux capacités de la machine, auriez-vous un lien ?

    - Pis bon, si vous avez un truc pour afficher une photo de 4mo en jpg avec moins de 200mo de ram je veux bien aussi...


    Merci d'avance pour vos réponses !

    Ps : je suis sous eclispe

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 659
    Points
    2 659
    Par défaut
    ça me semble énorme...

    Tu utilises Swing ou SWT?

    Peux tu mettre le code de chargement des images que tu utilises?

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Attention que si tu charge tes images avec certaines méthodes présentes dans swing, il est clairement indiqué que ces méthodes gardent l'image en cache (elles sont en fait destinées à charger rapidement tes icones de l'application).

    Ensuite, tu peux limiter la mémoire avec le paramètre -Xmx à mettre sur la ligne de commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Xmx256M monApplication.jar

  4. #4
    Candidat au Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci pour vos réponses.

    @deathness : A moi aussi, d'ou mon post.
    J’utilise une JFrame et tout le reste de l'affichage est géré par l'application

    J'ai fais mes tests sur un exemple simple tel que http://www.java2s.com/Tutorial/Java/...ushanimage.htm (avec mise a null de la variable et sans repaint pour voir si la ram baissait pas avec le temps)

    @tchize_ : Oui en effet je suis au courant de la mise en mémoire des images, c'est pour quoi j'ai appliqué le flush et plus du set a null.

    Je vais tester ta ligne de commande dès maintenant.

    Sinon, j'ai installé pour l’occasion une VM windows xp avec 1go de ram, et la même application ne dépasse jamais les 400mo de mémoire vive utilisé.
    Java doit donc s'adapter a l'espace dispo par défaut.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par D.Iste Voir le message

    @tchize_ : Oui en effet je suis au courant de la mise en mémoire des images, c'est pour quoi j'ai appliqué le flush et plus du set a null.
    Ce n'est pas ce dont je parlais, mais soit.


    Sinon, j'ai installé pour l’occasion une VM windows xp avec 1go de ram, et la même application ne dépasse jamais les 400mo de mémoire vive utilisé.
    Java doit donc s'adapter a l'espace dispo par défaut.
    Ben oui la valeur max par défaut dépend de ton environnement. Maintenant, java a tendance à préférer manger la mémoire que faire travailler le GC quand c'est possible. Le full GC n'interviens que quand on ne trouve plus de mémoire.

  6. #6
    Candidat au Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Super ! Avec java -Xmx256M monApplication.jar mon application se limite a beaucoup moins de mémoire, je vais pouvoir faire mes tests avec une grosse partie de stress en moins ^^
    Java est bien gentil de gérer ca tout seul, et plutot efficace, mais pour les tests, c'est pas top :s

    Merci donc, car ce probleme est résolu. (oui, "ce" probleme, car en testant mon app sur un vrai petit pc, j'ai découverts d'autre horreurs...)

    @tchize_ : Je pensais au fait que les Image sont stocké dans un map tel un flyweight pour éviter les pertes inutile, si ce n'est pas ca, je serais intéressé d'etre réorienté sur la bonne voie !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/02/2006, 12h03
  2. gestion de la mémoire
    Par moldavi dans le forum C++
    Réponses: 17
    Dernier message: 04/02/2005, 23h18
  3. Réponses: 11
    Dernier message: 26/12/2004, 22h50
  4. Gestion de la mémoire entre plusieurs DLL
    Par Laurent Gomila dans le forum C++
    Réponses: 7
    Dernier message: 27/07/2004, 15h28
  5. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44

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