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 :

[Info] Chargement image et Java heap space


Sujet :

Langage Java

  1. #1
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut [Info] Chargement image et Java heap space
    Bonjour à tous (et à toutes, ne soyons pas sectaires)

    voilà, je suis en train de développer un programme qui aura quelques fonctionnalités de type SIG (affichages de cartes raster et vectorielles). Mon problème est que certaines images font plus de 5 Mo (compression maxi-maxi). Au chargement de ces images, j'obtiens l'exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    En gros, est-il possible d'augmenter la taille du tas ou de tout simplement d'avoir à gérer de grosses images en fond d'appli ?

    Merci à toute réponse !!!

    PS : j'utilise Java 1.5.06 et Swing (mon image est affichée sur un JPanel)

    [EDIT :] je précise que le chargement d'mages de 2 Mo se fait sans souci !
    La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut
    Merci pour la réponse
    Je suis d'accord avec ça, mais il faut avouer que prévoir à l'avance la taille mémoire à allouer, c'est pas très pratique ! On ne peut pas savoir si l'utilisateur va ouvrir une image de 27 ko ou de 256 Mo (en exagérant un poil ).... Ma question était plutôt :
    est-il possible d'augmenter dynamiquement la taille du tas ?
    La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Si je ne me trompe pas il est impossible de modifier la taille du heap dynamiquement... Par contre tu peux très bien définir une taille maximum suffisamment grande :
    a++

  5. #5
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Chine

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Euh, à priori, non on ne peut pas... Il faudrait que la taille allouée change en pleine éxécution, ce qui me parrait pas très faisable...

    http://javasearch.developpez.com/j2s...l#freeMemory()

    Calling the gc method may result in increasing the value returned by freeMemory.
    http://javasearch.developpez.com/j2s...time.html#gc()

    bon courage !

    mavina
    Développeur Java / Flex à Shanghai, Chine
    mes publications
    Mon dernier tutoriel : Messages Quit IRC : explications

    La rubrique IRC recrute des redacteurs : contactez moi

    Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]

  6. #6
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut
    Merci pour toutes ces réponses constructives...

    Je pense qu'il va falloir quelque peu contrôler les actions de ce "cher" utilisateur sans qui le développeur ne serait rien..... mais qui nous enquiquine avec ses grosses mains pleines de doigts mêmes pas capables de pas taper un caractère étrange là où on s'y attend pas et qui fait tout planter

    Je fais des cauchemars où je vois des utilisateurs partout AAAAAAARRRRRRGGGGGGHHHH, l'un deux va charger une image de 500 Mo et j'ai prévu que 256 de mémoire

    Heum, bref ! désolé pour le pétage de plombs, il va falloir que je pense aux vacances moi !
    En tous cas merci à tous
    La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique

  7. #7
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Chine

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Pourquoi ne pas sauvegarder dans une variable taille la somme de la taille de toutes tes images chargées.
    Si a l'ouverture d'une image, le size dépasse le seuil définit, tu informe l'utilisateur que ton programme ne peut accepter plus d'images par manque de mémoire, et qu'il faut fermer une image pour en rouvrir une autre.

    Associé a :
    , tu peux définir une taille qui ne sera jamais dépassée...

    bien à toi

    mavina
    Développeur Java / Flex à Shanghai, Chine
    mes publications
    Mon dernier tutoriel : Messages Quit IRC : explications

    La rubrique IRC recrute des redacteurs : contactez moi

    Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]

  8. #8
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut
    Merci Mavina !

    C'est un peu à ça que je pensais quand j'ai écrit
    contrôler les actions de ce "cher" utilisateur
    mais je l'avais pas formulé dans ce sens. Je vais réfléchir à ça sérieusement et à tête reposée !
    La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique

  9. #9
    Membre du Club Avatar de bubu56
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    Je ne sais pas si ca t'intéresses, mais tu peux connaitre la taille max avec :
    Runtime.getRuntime().maxMemory()

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Sinon tu as pensé à utiliser un buffer pour charger ton images en plusieurs fois ?

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

Discussions similaires

  1. Chargement d'un TFileInputDelimited (java heap space)
    Par TheTcha dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 27/12/2012, 17h00
  2. Images et java Heap Space
    Par donnadieujulien dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 07/10/2008, 19h47
  3. Probleme de java heap space : creation buffered image!
    Par Battosaiii dans le forum Multimédia
    Réponses: 7
    Dernier message: 06/08/2007, 10h49
  4. Probleme : Java heap space et images
    Par Crowell dans le forum Langage
    Réponses: 3
    Dernier message: 20/04/2007, 17h05
  5. [ memoire ] Java Heap Space
    Par natha dans le forum Général Java
    Réponses: 10
    Dernier message: 23/01/2006, 11h15

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