IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Surcharge de pile - java.lang.OutOfMemoryError


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut Surcharge de pile - java.lang.OutOfMemoryError
    Bonjour,

    Voici mon problème, j'ai créer une fonction qui recherche une information (de type String) dans un texte. Cette Recherche se base sur une recherche de la chaine précédente et sur une recherche de la chaine suivante. Une fois ces deux éléments trouvés, on sélectionne le texte contenu entre ces deux positions (via substring) et on met le tout dans une variable Info.content .

    La est tout le problème, Le fait de le mettre dans cette variable génère une erreur : java.lang.OutOfMemoryError car je n'ai pas qu'une information a trouvées mais plusieurs. Si j'enlève le "Info.content =" du code tout fonctionne !!! Je pense a une surcharge mémoire mais comment puis je faire pour récupérer cette information qui m'est indispensable ... Si vous pouviez m'éclairer Merci

    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
    	/**
    	 * This fonction permits to search the Information in the File
    	 * 
    	 * @param Info
    	 * @param file
    	 * @return
    	 */
    	public boolean SearchInfo(Information Info, File file, String LogPath) {
    
    		boolean infoFound = false;
    		String FileContent;
    
    		try {
    
    			InputStream in = new BufferedInputStream(new FileInputStream(file));
    			byte[] bytes = new byte[in.available()];
    			in.read(bytes);
    			// Attention pe faut-il utiliser le constructeur (byte[] bytes, //
    			FileContent = new String(bytes);
    			// TQ il reste le mot de debut et qu'on a pas trouve if
    
    			int beginContent, EndOfContent, newBeforeString;
    			beginContent = FileContent.indexOf(Info.beforeString);
    
    			if (beginContent != -1) {
    
    				EndOfContent = FileContent.indexOf(Info.afterString,
    						beginContent);
    				if (EndOfContent != -1) {
    
    					do {
    						newBeforeString = FileContent.indexOf(
    								Info.beforeString, beginContent + 1);
    
    						if (newBeforeString != -1
    								&& newBeforeString < EndOfContent) {
    							beginContent = newBeforeString;
    						} else {
    							Info.content = FileContent.substring(beginContent,
    									EndOfContent);
    							infoFound = true;
    						}
    
    					} while (newBeforeString != -1
    							&& newBeforeString < EndOfContent);
    
    				} else {
    					LogHelper.addText(IHMHelper.logDate()
    							+ " : Error Information " + Info.label
    							+ " can not be found ", LogPath);
    					LogHelper.addText(IHMHelper.logDate()
    							+ " : Error Reason : " + Info.afterString
    							+ " can not be found ", LogPath);
    				}
    
    			} else {
    				LogHelper.addText(IHMHelper.logDate() + " : Information "
    						+ Info.label + " can not be found ", LogPath);
    				LogHelper.addText(IHMHelper.logDate() + " : Reason : "
    						+ Info.beforeString + " can not be found ", LogPath);
    			}
    
    			in.close();
    		}
    
    		catch (IOException e) {
    
    			LogHelper.addText(IHMHelper.logDate() + " : ERROR "
    					+ e.getLocalizedMessage(), LogPath);
    		}
    
    		// System.out.println(Info.content);
    		return infoFound;
    
    	}

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Je pense tout simplement que tu ferais mieux de ne pas utiliser String pour y mettre le contenu d'in fichier.
    Mais plutot parcourir ce fichier et extraire de beginContent a endContent dans un autre fichier.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    Oui j'y est pensé aussi, Mais je dois réaliser un affichage propre de mes données (Nom de l'information : Contenu : Remarque) plus tard ainsi il me faut stocker temporairement ces données .

    Je sent que sa va pas etre du facile ....

  4. #4
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu peux les stocker tes données, mais pas dans un String, c'est pas forcément adapté pour ce que tu veux faire.
    Regarde du cote des collections.

  5. #5
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Je n'ai pas trop bien pris le temps de lire ton probleme mais l'utilisation des StringBuffer ne pourrait-il pas satisfaire a resoudre ton probleme.
    Car pour les gros fichiers les String vaut mieux eviter.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    Alors en fait maxf1, je ne suis pas un specialiste en string buffer;
    Le principe est simple je vais stocke le contenu de mon texte dans une variable de manière à pourvoir le réutiliser facilement pour un affichage ou autre ...

    StringBuffer conviendrait-il ?

  7. #7
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Mais a quoi elle ressemble ta variable exactement?
    Comment tu la definis?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    Il y a la classe Information et dans cette classe on retrouve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	 /**
             * Content of The Information
             * When Post Processing is finished
             */
    	protected String content;

  9. #9
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Plus exectement, tu veux stocker quoi dedans ?

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    Merci beaucoup pour vos informations,

    ce que j'ai fait j'ai mis le FileContent dans un StringBuffer et tout fonctionne désormais parfaitement.

    De vrai champions, je suis en formation mais quand on a des gens comme vous qui nous aide pour des gros problèmes c'est vraiment Cool

    A bientôt

  11. #11
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Merci, cool que ca ai été aussi "simple"

    . ||
    . ||
    . ||
    . ||
    . \ /
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

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

Discussions similaires

  1. Eclipse erreur : java.lang.OutOfMemoryError: Java heap space
    Par sderecourt dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/04/2006, 11h28
  2. [Perf]java.lang.OutOfMemoryError - liste trop grande
    Par laurent.c123 dans le forum Général Java
    Réponses: 32
    Dernier message: 25/07/2005, 09h05
  3. [webService][Axis] java.lang.OutOfMemoryError
    Par webspeak dans le forum Services Web
    Réponses: 8
    Dernier message: 25/04/2005, 17h58
  4. [Strategie]Pb de java.lang.OutOfMemoryError
    Par eaque dans le forum Général Java
    Réponses: 3
    Dernier message: 06/04/2005, 11h01
  5. [JSP] pb " java.lang.outOfMemoryError "
    Par lthomas dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 31/03/2005, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo