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

Collection et Stream Java Discussion :

Problème mémoire Java heap space avec tableau et ArrayList


Sujet :

Collection et Stream Java

  1. #41
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    J'ai testé listlignesmicrorna.clear() pour effacer le contenu de ma liste, pensant que cela me redonnerait de la mémoire, mais non , seulement très peu ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MEMOIRE après création listlignesmirbase
    init = 0(0K)
    used = 64210664(62705K)
    committed = 66650112(65088K)
    max = 66650112(65088K)
     
    MEMOIRE après effacement listlignesmirbase
    init = 0(0K)
    used = 62292424(60832K)
    committed = 66650112(65088K)
    max = 66650112(65088K)

    Pourquoi ?

    Car je n'arrive pas trop à modifier mon algo j'ai déjà eu du mal à trouver celui-ci...

  2. #42
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    au lieu de lire tout en mémoire, puis de traiter une ligne à la fois, pourquoi est-ce que tu ne fait pas le traitement au fur et à mesure de la lecture. Ce n'est jamais une bonne idée de lire un gros fichier d'un coup en mémoire.

  3. #43
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Ton problème c'est que tu fais plein de liste et de tableaux dans tous les sens, le tout via plusieurs boucles à l'intérêt douteux...


    A quoi te sert la liste listlignesmirbase ?
    Pourquoi le recopier dans un tableau tabdonneesmirbase ?
    A quoi te servent les différentes boucles qui suivent ?

    Et surtout : Quel est l'objectif de ton algo ?

    a++

  4. #44
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    J'ai essayé, mais je n'ai pas réussi à faire un algo qui fonctionne ...

    C'est mon post concernant "récupérer des lignes dans un fichier texte après 2-3 lignes"

    http://www.developpez.net/forums/d92...er-texte-java/

  5. #45
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    Pour l'intérêt de mon algo, c'est expliqué dans le post cité dans mon message précédent.

    J'ai un fichier texte et l'utilisateur de mon application va effectuer une recherche de type "hsa-mir-..." ou "cel-..." etc.

    Bref ce que l'utilisateur va saisir va être recherché dans mon fichier texte.
    Dans mon "mauvais algo" je copiais mon fichier texte dans une ArrayList, et j'effectuais des SPLIT pour sélectionner, tester les lignes lues.

    Si je veux améliorer mon algo (le rendre fonctionnel plutôt...) il faudrait que dès que je trouve la ligne d'intérêt (ID recherche_utilisateur .....) je conserve les lignes jusqu'à rencontrer "//" en début de ligne.

    Je détaillerai cela demain si je n'ai pas été assez clair

  6. #46
    Membre du Club
    Homme Profil pro
    Ingénieur bioinformaticien
    Inscrit en
    Avril 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Points : 49
    Points
    49
    Par défaut
    J'ai réussi en modifiant mon algo qui est maintenant le suivant :

    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
    public static void donneesmirna()
    { 
         recherche = saisiemirna.getText().toLowerCase();
         longrecherche = recherche.length();
     
         //lecture du fichier texte	
         try
             {
            	InputStream ips=new FileInputStream(datamicrorna); 
        	InputStreamReader ipsr=new InputStreamReader(ips);
    	BufferedReader br=new BufferedReader(ipsr);
     
    	try
        	 {		
    	String ligne;
    	boolean indicateur = false;
     
    	while ((ligne=br.readLine())!=null)
    	{
    	if (indicateur==true)
    		{
    		listlignesmirbase.add(ligne);
    		if (ligne.regionMatches(0, "//", 0, 2)==true)
    			{
    			break;
    			}
    		}
     
    	if ((ligne.regionMatches(0,"ID",0,2)==true) && (ligne.regionMatches(5, recherche, 0, longrecherche)==true))
    		{
    		indicateur = true;
    		listlignesmirbase.add(ligne);
    		}
    	}
     
    	int longlistmicrorna = listlignesmirbase.size()+1;
    	int i=0;
     
    	while(!listlignesmirbase.get(i).regionMatches(21, "/accession=", 0, 11))
       		{
       		i++;
       		}
     
    	txtaccess = listlignesmirbase.get(i).substring(listlignesmirbase.get(i).indexOf("\"")+1, listlignesmirbase.get(i).lastIndexOf("\""));
     
    	int m=0;
     
    	while(!listlignesmirbase.get(m).regionMatches(0, "SQ", 0, 2))
    		{
    		m++;
    		}
     
    	m=m+1;
     
    	while(m!=longlistmicrorna-2)
    		{
    		txtseq = txtseq +listlignesmirbase.get(m);
    		m++;
    		}
     
    	txtseq = txtseq.trim(); // on élimine les espaces extérieurs
    	txtseq = txtseq.replaceAll(" ",""); // on élimine les espaces intérieurs
    	txtseq = txtseq.replaceAll("[\\d]","");  // on élimine tous les chiffres 
    	txtseq = txtseq.replace("null","");
     
        	numaccess.setText(txtaccess);
    	numid.setText(recherche);
    	seqq.setText(txtseq);
     
              }
     
              finally 
        	 {
    	br.close();
        	 }
            }
     
            catch (Exception e1)
            {
            	System.out.println(e1.toString());
            }	
    }
    Merci beaucoup pour votre aide qui m'a été très précieuse ! J'ai retesté la mémoire et ça fait un grand changement !! ça fait plaisir à voir !

    Merci encore !

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Problème de mémoire: Java heap space
    Par Benduroy dans le forum Général Java
    Réponses: 3
    Dernier message: 20/05/2011, 15h14
  2. Réponses: 10
    Dernier message: 25/08/2010, 21h07
  3. Java heap space avec xms et xmx
    Par le mage tophinus dans le forum Général Java
    Réponses: 8
    Dernier message: 29/04/2010, 12h51
  4. Problème avec le Java heap space
    Par Viscapon dans le forum JSF
    Réponses: 5
    Dernier message: 18/05/2009, 17h42
  5. probleme de mémoire : Java heap space
    Par Seb33300 dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 21/02/2007, 13h40

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