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 :

BufferedReader readLine java.lang.outofmemoryerror java heap space


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 16
    Points
    16
    Par défaut BufferedReader readLine java.lang.outofmemoryerror java heap space
    Bonjour j'aurais besoin de votre aide

    j'utilise un BufferedReader pour récupérer le résultat Json

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    br = new BufferedReader(new InputStreamReader(c.getInputStream()));
    Et après je parcours mon résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     while ((line = br.readLine()) != null) 
    {
    	 json = json + line;
    }
    Sauf que des fois le ReadLine génére un out off Memory parce que la ligne qui va récupérer à beaucoup de donnée

    En sachant que le fichier se compose d'une seule ligne généralement donc ce que va essayer de lire la méthode ReadLine c'est tout le fichier d'un coups

    Est-ce que y un moyen de charger le fichier autrement pour le lire svp

    Merci d'avance pour votre aide.

    Cordialement

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tu peux utiliser ton InputStreamReader directement au lieu de le passer dans le BufferedReader et tu vas lire par blocs.
    Si tu souhaites conserver la bufferisation, utilise un BufferedInputStream.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Merci pour ta réponse dinobogan

    comment j'utilise directement le InputStream ? tu veux dire j'utilise la méthode read(arg0, arg1, arg2) ?

    Est ce que tu peux me donner un exemple stp ?

    Cordialement

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 608
    Points
    21 608
    Par défaut
    Pardon si c'est une question stupide, mais tu veux en faire quoi, du JSON que tu es en train de lire ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Merci pour ta réponse thelvin

    Pour le Json je doit le parcourir et récupérer les données Champs par champs, pour les sauvegarder après dans plusieurs tables d'une bases de donnée.

    Cordialement

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 608
    Points
    21 608
    Par défaut
    Ok.

    Donc a priori tu espérais ensuite donner ce texte JSON lu à une bibliothèque JSON pour qu'elle te permette d'extraire les données voulues.

    Or, tu as remarqué qu'essayer de lire le JSON en entier provoque un dépassement de mémoire. Peu importe comment tu le lis, c'est le fichier JSON lui-même qui est trop grand pour être en mémoire. Et donc ne peut pas être donné à une bibliothèque JSON.

    Tu as besoin de lire, non seulement le fichier petit à petit, mais surtout le JSON qu'il contient petit à petit. Puisque tout entier il est trop gros pour la mémoire. Et ça, ce n'est pas l'usage habituel.

    Pas habituel, mais pas impossible. Tu peux utiliser par exemple JsonParser de la bibliothèque Jackson, qui va lire un JSON élément par élément, et te permettant donc de traiter le JSON au fur et à mesure, sans le charger entièrement en mémoire.
    Un JsonParser peut lire un InputStream au lieu de nécessiter des données entièrement en mémoire.
    Cela te permettrait par exemple, d'extraire des données par paquets de 500, mettre ce paquet en base de données, et passer au paquet suivant.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. java.lang.OutOfMemoryError: Java heap space
    Par othmanbenhalima dans le forum Général Java
    Réponses: 12
    Dernier message: 08/01/2008, 17h46
  2. java.lang.OutOfMemoryError: Java heap space
    Par EvilAngel dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2007, 10h17
  3. [Findbugs] [Maven] java.lang.OutOfMemoryError: Java heap space
    Par albaille dans le forum Qualimétrie
    Réponses: 1
    Dernier message: 10/04/2007, 15h17
  4. Réponses: 4
    Dernier message: 18/09/2006, 10h02
  5. Eclipse erreur : java.lang.OutOfMemoryError: Java heap space
    Par sderecourt dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/04/2006, 11h28

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