Boucle qui consomme beaucoup de memoire
pedro0077
Messages postés
5
Statut
Membre
-
Jean-Marie -
Jean-Marie -
salut tout le monde ;
mon probleme c'est ke j'ai un programe ki marche b1 mais qui consomme beaucoup en memoire (la moitié) peut etre ke la boucle while qui cause le probleme!!!
voici les 2 classes
classe extraction qui permet de parcourir un fichier est de le lire
classe maine qui permet de retourner des valeurs a l'aide de regex a partir du fichier
Merci d'avance pour vos aides
mon probleme c'est ke j'ai un programe ki marche b1 mais qui consomme beaucoup en memoire (la moitié) peut etre ke la boucle while qui cause le probleme!!!
voici les 2 classes
classe extraction qui permet de parcourir un fichier est de le lire
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 maine qui permet de retourner des valeurs a l'aide de regex a partir du fichier
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
A voir également:
- Boucle qui consomme beaucoup de memoire
- Mémoire vive - Guide
- RAM : type, format, CAS, vitesse, tout sur la mémoire vive - Guide
- C'est un secret bien gardé : ce réglage d'expert peut doper les performances de votre PC - Guide
- Comment savoir quelle application consomme batterie android - Guide
- Nettoyer memoire iphone - Guide
1 réponse
salut,
indépendamment de ton code, tu peux limiter la consommation de mémoire lors du lancement de java :
java -Xmxn
plus d'info ici :
https://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html
indépendamment de ton code, tu peux limiter la consommation de mémoire lors du lancement de java :
java -Xmxn
plus d'info ici :
https://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html