salut tout le monde ;

mon problème c'est que j'ai un programme qui marche bien mais qui consomme beaucoup en mémoire (la moitié) peut-être que c'est la boucle while qui cause le problème!!
voici les 2 classes

classe extraction qui permet de parcourir un fichier est de le lire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
 
import javax.swing.*;
import java.awt.GridLayout;
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent;
import java.io.* ; 
public  class extraction 
 {
	 String fichierPath="";
	 String chaine="";
 
	  public String getChaine() {
          return chaine;
      }
 
	// Méthode de choix d'un fichier
	public void choisir() {
	// Crée un panneau
	JPanel contenuFenêtre = new JPanel();
 
	// Affecte un gestionnaire de présentation à ce panneau
	GridLayout disposition = new GridLayout(4,2);
	contenuFenêtre.setLayout(disposition);
	// Crée les contrôles en mémoire
 
 
	// Ajoute les contrôles au panneau
	// Crée le cadre et y ajoute le panneau
	JFrame cadre = new JFrame("Boutton parcourir");
	cadre.setContentPane(contenuFenêtre);
 
	// Affecte ses dimensions à la fenêtre et la rend visible
	cadre.setSize(400,100);
	cadre.setVisible(true);
 
	JButton lancer = new JButton("parcourir");
	contenuFenêtre.add(lancer);
	//Action sur le bouton
	lancer.addActionListener( new ActionListener() {
    public void actionPerformed(ActionEvent e){
        JFileChooser chooser = new JFileChooser();
        int returnVal = chooser.showOpenDialog(chooser);
        if(returnVal == JFileChooser.APPROVE_OPTION) {
           System.out.println("Vous avez choisi le fichier : " +
                chooser.getSelectedFile().getName());
           		fichierPath = chooser.getSelectedFile().getAbsolutePath();
           	System.out.println("le lien du fichier est : "+ fichierPath);
           	String ligne="" ; 
           	System.out.println ("*** debut du fichier ***");  
           	BufferedReader entree = null;
			try {
				entree = new BufferedReader (new FileReader (fichierPath));
			} catch (FileNotFoundException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
    		do
    			{ try {
					ligne = entree.readLine() ;
				} catch (IOException e1) {
 
					e1.printStackTrace();
				}
    				if (ligne != null) {System.out.println (ligne) ;
    				chaine+=ligne+"\n";}
    			}
    		while (ligne != null) ;
    		//System.out.println (chaine) ;
    		try {
				entree.close() ;
			} catch (IOException e1) {
 
				e1.printStackTrace();
			}
    		System.out.println ("*** fin du fichier ***");       	 
    }
 
    }
} );
 
}
 
}

classe main qui permet de retourner des valeurs a l'aide de regex a partir du fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
import java.util.*;
import java.util.regex.*;
import java.io.*;
 
public class main extends extraction {
 
		private static Pattern pattern;
		private static Matcher matcher;
 
	public static void main (String args[])
	{ 	
		String chaine2 ="";
		extraction lecture = new extraction() ;	
	    lecture.choisir();
	    while (true) {
	    	String aParser= lecture.getChaine();
			if (!aParser.equals(chaine2)) {
			chaine2=aParser;
	    Pattern p=Pattern.compile("(.*?)*#\\{(.*?)\\}#.*?");
		Matcher m=p.matcher(aParser);
		while(m.find()) 
			System.out.println(m.group(2)); 
 
	}
}
	}}

Merci d'avance pour vos aides