|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() Alain BernardIngénieur aéronautique Inscription : décembre 2011 Messages : 139 ![]() |
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 ! |
|
00
|
|
|
#2 |
|
Membre émérite
![]() ![]() ![]() Mickael IstriaDéveloppeur Expert Eclipse RCP Inscription : juillet 2008 Messages : 482 ![]() |
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 |
|
00
|
|
|
#3 |
![]() ![]() Alain BernardIngénieur aéronautique Inscription : décembre 2011 Messages : 139 ![]() |
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
__________________
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 ! |
|
00
|
Copyright © 2000-2013 - www.developpez.com