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

Entrée/Sortie Java Discussion :

Choix du type de flux


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 56
    Points : 63
    Points
    63
    Par défaut Choix du type de flux
    Bonjour,

    Je suis en train de developper une application. Celle-ci doit lire des fichiers images et conserver une liste de bytes. Pour des fichiers de moins de 10MO pas de problèmes, je stocke les données sous forme d'un array of byte. Par conte j'ai des problèmes de memoire quand le fichier fait 60MO.
    J'ai une solution à ce problème en utilisant -Xmx768m -Xms768m en paramètres de la ligne de commande.

    Ma question et donc : existe-t-il un type de flux qui me permettrait de conserver 60 MO autrement que par un tableau de bytes ?

    d'avance merci.

  2. #2
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Que tu conserves les données dans un flux ou dans un tableau, elles seront conservés en mémoire, donc le problème reste le même. Il doit y avoir une autre solution que lire les images de 60 Mo

  3. #3
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Qu'importe la manière dont tu les stockes, de toute façons, faudra bien les mettre quelque part ces 60MO

    Le problème, c'est qu'avec des images, tu peut pas les traiter seulement en partie, sinon, tu aurais pu les lire par partie de 5MO par exemple. Pourquoi tu as des images autant grosses ?

  4. #4
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Points : 252
    Points
    252
    Par défaut
    A mon avis monter 60Mo en mémoire ne doit pas poser problème. Ce qui doit poser problème c'est de monter X fois 60Mo en gardant le tout en mémoire. Là, ça devient à mon avis un problème de conception/responsabilité du module en question.

    C'est clair que garder autant d'informations en mémoire devient vite problématique. Est ce-que tu clean bien tes références vers tes tableaux de bytes ? Est-ce que ton appelant garde en mémoire ces tableaux de bytes ?
    Quelques tips Java & autres : mon blog

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 56
    Points : 63
    Points
    63
    Par défaut
    Merci pour ces réponses.

    Pour répondre à ta question McFoggy. Pas de problème de ce coté, l'erreur mémoire ce produit dans le prcessus de lecture qui est fait une seule fois, c'est bien la lecture de 60 MO qui pose problème.

    Et pour la taille, ce n'est pas moi qui décide

  6. #6
    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,

    Citation Envoyé par McFoggy
    A mon avis monter 60Mo en mémoire ne doit pas poser problème.
    Par défaut une application Java utilise un tas maximum de 64 Mo (max heap size). C'est à dire que l'application ne peut utiliser au maximum que 64 Mo de données !
    Donc le chargement d'une image de 60Mo peut très bien aboutir à une OutOfMemory...


    Donc tu es obligé d'utiliser l'option -Xmx pour augmenter la taille maximum du heap (par contre tu n'es pas obligé d'utiliser -Xms qui définit la taille à allouer au lancement de l'application).

    a++

Discussions similaires

  1. Choix de type de données oracle
    Par dadg dans le forum Oracle
    Réponses: 3
    Dernier message: 04/09/2006, 13h56
  2. [MySQL] Choix du type de champs
    Par hbellahc dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/09/2006, 21h40
  3. Mysql : choix des types pour les champs entre :
    Par Thierry8 dans le forum Administration
    Réponses: 3
    Dernier message: 14/06/2006, 08h22
  4. [architecture] Choix du type de pile
    Par Neitsa dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 29/11/2005, 10h04
  5. choix des types
    Par cali dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/08/2004, 13h16

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