Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Rédacteur
    Avatar de alain.bernard
    Homme Profil pro Alain Bernard
    Ingénieur aéronautique
    Inscrit en
    décembre 2011
    Messages
    330
    Détails du profil
    Informations personnelles :
    Nom : Homme Alain Bernard
    Âge : 26
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : décembre 2011
    Messages : 330
    Points : 2 031
    Points
    2 031

    Par défaut Explosion mémoire avec IDocument

    Bonjour,

    J'ai une application qui nécessite de traiter un grand nombre de fichiers en lecture, sans les ouvrir dans des éditeurs.

    Afin de profiter de la puissance de l'API IDocument d'Eclipse, j'ai réussi à obtenir ces éléments sans ouverture des éditeurs, grâce au ITextFileBufferManager.

    Problème : l'application prend rapidement une place monstrueuse en mémoire, puisqu'un IDocument stocke directement tout le contenu du fichier (si j'ai bien compris).
    La solution serait donc de pouvoir "détruire" ces objets après l'extraction des données du fichier. Je sais que je pourrais utiliser directement les classiques BufferedReader mais l'avantage des IDocument est de pouvoir aller directement à une ligne donnée, effectuer une recherche, etc...

    Quelqu'un saurait-il m'indiquer comment gérer ce cas de figure ?

    Merci d'avance pour votre aide.
    Pas de messages techniques par MP, les forums sont là pour ça.
    Rédacteur d'articles sur la plateforme Eclipse

  2. #2
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro Mickael Istria
    Développeur Expert Eclipse RCP
    Inscrit en
    juillet 2008
    Messages
    687
    Détails du profil
    Informations personnelles :
    Nom : Homme Mickael Istria
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2008
    Messages : 687
    Points : 1 286
    Points
    1 286

    Par défaut

    Tu as besoin d'avoir tous ces fichiers ouverts en meme temps? Est-ce que les fichiers sont gros (ie plus gros que ce que tu as de RAM) ?
    Si non, je pense qu'il faut juste que tu verifies que tu fais bien les close() et/ou dispose() sur tes documents, buffers, stream & cie. La memoire sera liberee et utilisable pour la suite de ton traitement.

    Si oui a l'une des 2 reponses, il faut songer a une autre approche, car tu ne pourras pas compter sur ta RAM pour faire ce traitement. Quelques suggestions: faire plusieurs passes, du "Diviser pour regner" ou tu finis par traiter des fichiers 2 a 2, parser les fichiers pour avoir des objets plutot que du textes (si tu trouves un bon modele)...
    Tu fais du JEE/Web/Mobile dans Eclipse? T'as essaye JBoss Tools ?
    Read my blog about Eclipse | Follow me on twitter

  3. #3
    Rédacteur
    Avatar de alain.bernard
    Homme Profil pro Alain Bernard
    Ingénieur aéronautique
    Inscrit en
    décembre 2011
    Messages
    330
    Détails du profil
    Informations personnelles :
    Nom : Homme Alain Bernard
    Âge : 26
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : décembre 2011
    Messages : 330
    Points : 2 031
    Points
    2 031

    Par défaut

    Salut,

    Le problème est que je ne peux pas appeler la méthode dispose() sur des objets IDocument, ni sur les TextFileBuffer qui servent à leur ouverture.
    Ceci étant, le temps de chargement de chaque fichier en mémoire était quand même long, indépendamment de la conso mémoire, du coup je suis resté sur des bons vieux BufferedReader.

    Problème "résolu" donc merci de ton aide
    Pas de messages techniques par MP, les forums sont là pour ça.
    Rédacteur d'articles sur la plateforme Eclipse

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •