Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Eclipse > Eclipse Platform
Eclipse Platform Développement de plugins Eclipse et d'applications Eclipse RCP (Rich Client Platform). Avant de poster -> Tutoriels sur le développement de plugins Eclipse
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/11/2012, 21h53   #1
alain.bernard
Rédacteur
 
Avatar de alain.bernard
 
Homme Alain Bernard
Ingénieur aéronautique
Inscription : décembre 2011
Messages : 139
Détails du profil
Informations personnelles :
Nom : Homme Alain Bernard
Âge : 24
Localisation : France

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

Informations forums :
Inscription : décembre 2011
Messages : 139
Points : 1 021
Points : 1 021
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

Rejoignez-nous à l'EclipseCon France 2013 !
alain.bernard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 18h38   #2
Mickael_Istria
Membre émérite

 
Avatar de Mickael_Istria
 
Homme Mickael Istria
Développeur Expert Eclipse RCP
Inscription : juillet 2008
Messages : 482
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 : 482
Points : 910
Points : 910
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)...
__________________
Inscrivez-vous pour la premiere EclipseCon France, le 5 et 6 juin!

Read my blog about Eclipse | Follow me on twitter
My employer, JBoss, by RedHat
Mickael_Istria est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2012, 21h09   #3
alain.bernard
Rédacteur
 
Avatar de alain.bernard
 
Homme Alain Bernard
Ingénieur aéronautique
Inscription : décembre 2011
Messages : 139
Détails du profil
Informations personnelles :
Nom : Homme Alain Bernard
Âge : 24
Localisation : France

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

Informations forums :
Inscription : décembre 2011
Messages : 139
Points : 1 021
Points : 1 021
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

Rejoignez-nous à l'EclipseCon France 2013 !
alain.bernard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h28.


 
 
 
 
Partenaires

Hébergement Web