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 :

Java heap space - ArrayList.ensureCapacity(Unknown Source)


Sujet :

Collection et Stream Java

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut Java heap space - ArrayList.ensureCapacity(Unknown Source)
    Bonjour.

    J'ai un problème de mémoire avec Eclipse.

    Mon programme s'appuie sur un fichier texte qui fait 18 Mo. Pour pouvoir travailler dessus j'ai ajouté chaque ligne dans une ArrayList.

    Problème : à mon avis la mémoire n'est pas suffisante (celle allouée à l'ArrayList d'après ce que j'ai compris) car quand je lance mon programme j'ai ce message d'erreurs qui s'affiche :

    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
    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    	at java.util.ArrayList.ensureCapacity(Unknown Source)
    	at java.util.ArrayList.add(Unknown Source)
    	at infosmiRNA.actionPerformed(infosmiRNA.java:457)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Et ma ligne de code 457 qui est précisée dans le message d'erreur est celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (ligne!=null)
    {
    listlignesmirbase.add(ligne.toString());   // ligne n°457
    }
    Comment résoudre ce problème de mémoire ?
    Sur le net j'ai trouvé qu'il fallait rajouter "-XX:PermSize=128m-XX:MaxPermSize=256m" dans le fichier eclipse.ini mais cela n'a rien fait de plus ...

    Quelqu'un aurait-il une idée ?
    Merci beaucoup !!!

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par phoenix420 Voir le message
    Et ma ligne de code 457 qui est précisée dans le message d'erreur est celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (ligne!=null)
    {
    listlignesmirbase.add(ligne.toString());   // ligne n°457
    }
    ce code va boucler infiniement jusqu'à être a court de mémoire, le critère d'arrêt ne se déclanchant jamais.

    Sur le net j'ai trouvé qu'il fallait rajouter "-XXermSize=128m-XX:MaxPermSize=256m" dans le fichier eclipse.ini mais cela n'a rien fait de plus ...
    eclipse.ini ne sert qu'à paramétrer l'IDE, c'est ton programme qu'il faut parametrer. Dans les run configuration de ton projet, t'as un onglet pour les paramètres de la JVM, c'est là qu'il faut les ajouter.

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    D'accord.

    Comment dois-je m'y prendre pour remplir ma liste alors si cela sature la mémoire ? Je dois passer par un autre moyen ?

  4. #4
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Bonjour,

    lire la ligne suivante dans ton while peu être

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    ..euh comment ça ?
    Tant que ma ligne n'est pas nulle, la boucle passe à la ligne suivante pour l'ajouter à ma liste (d'où la saturation de la mémoire ..), donc je passe bien à la ligne suivante.

    Qu'est ce que vous vouliez dire ?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    dans ton code, tu ne passe pas à la ligne suivante, tu ajoute toujours la même ligne!

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    Aïe d'accord

    Donc il faut que je crée un compteur ?

  8. #8
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    oO

    nan nan mais tu a bien un truc pour lire ton fichier genre un BufferedReader br
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while((line=br.readLine())!=null)
    lit et test la ligne lu si elle et null

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    D'accord.
    Oui j'avais bien créé mon BufferedReader... Mais je ne l'ai pas utilisé dans ma boucle ..
    J'essayerai demain, là je ne peux pas le tester chez moi.

    En tout cas merci ! Bonne soirée :-)

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    Bonjour.

    J'ai testé à l'instant la commande et en effet cela fonctionne déjà mieux.
    Mais j'ai un autre problème dont je ne situe pas la source .. Voilà le code :

    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
    listlignesmirbase = new ArrayList<String>();
    listlignesmicrorna = new ArrayList<String>();
    datamicrorna ="C:/fichier.txt";
     
    if (source == lancement)
    {
      //lecture du fichier texte	
      try
      {
       InputStream ips=new FileInputStream(datamicrorna); 
       InputStreamReader ipsr=new InputStreamReader(ips);
       BufferedReader br=new BufferedReader(ipsr);
     
       String ligne=br.readLine();
     
       while ((ligne=br.readLine())!=null)
       {
        listlignesmirbase.add(ligne);
       }
     
       for (String lignlist : listlignesmirbase)
          {
           if ((lignlist.regionMatches(0, "ID", 0, 2)==true) && (lignlist.regionMatches(5, recherche, 0, longrecherche)==true))
              {
               while ((lignlist=br.readLine())!=null && (lignlist=br.readLine())!="//")
                        {
                        listlignesmicrorna.add(lignlist);
    	       }
              }
           }
     
     
        System.out.println(listlignesmirbase.get(0));
    Le début de mon fichier texte est 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
    ID   cel-let-7         standard; RNA; CEL; 99 BP.
    XX
    AC   MI0000001;
    XX
    DE   Caenorhabditis elegans let-7 stem-loop
    XX
    RN   [1]
    RX   PUBMED; 11679671.
    RA   Lau NC, Lim LP, Weinstein EG, Bartel DP;
    RT   "An abundant class of tiny RNAs with probable regulatory roles in
    RT   Caenorhabditis elegans";
    RL   Science. 294:858-862(2001).
    XX
    RN   [2]
    RX
    Donc le résultat qui devrait s'afficher est "ID cel-let-7 standard; RNA; CEL; 99 BP."

    Mais non, ce qui s'affiche quand je fais get(0) (la première ligne de mon ArrayList), c'est la seconde ligne, et pas la première comme je l'attends.

    Et je ne vois pas du tout d'où peut venir le décalage..

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Parce que tu ignore ta première lecture:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       String ligne=br.readLine();
     
       while ((ligne=br.readLine())!=null)
    Le résultat de ton premier readline est directement masqué par la première instruction de la boucle qui lit la ligne suivante.

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    Ah parfait ! Merci beaucoup !
    Je ne pensais pas que lorsque j'appelais de nouveau "ligne" dans ma boucle (après l'avoir déclarée) cela passait à la ligne suivante.

    Merci beaucoup !

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    Je dois avoir le même genre de souci à nouveau, sauf que cette fois je n'utilise pas de BufferedReader, mais des boucles. J'obtiens toujours le message d'erreur concernant la saturation de la mémoire.

    Mon fichier plat a la structure suivante :

    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
    84
    ID   cel-let-7         standard; RNA; CEL; 99 BP.
    XX
    AC   MI0000001;
    XX
    DE   Caenorhabditis elegans let-7 stem-loop
    XX
    RN   [1]
    RX   PUBMED; 11679671.
    RA   Lau NC, Lim LP, Weinstein EG, Bartel DP;
    RT   "An abundant class of tiny RNAs with probable regulatory roles in
    RT   Caenorhabditis elegans";
    RL   Science. 294:858-862(2001).
    XX
    RN   [2]
    RX   PUBMED; 12672692.
    RA   Lim LP, Lau NC, Weinstein EG, Abdelhakim A, Yekta S, Rhoades MW, Burge CB,
    RA   Bartel DP;
    RT   "The microRNAs of Caenorhabditis elegans";
    RL   Genes Dev. 17:991-1008(2003).
    XX
    RN   [3]
    RX   PUBMED; 12747828.
    RA   Ambros V, Lee RC, Lavanway A, Williams PT, Jewell D;
    RT   "MicroRNAs and other tiny endogenous RNAs in C. elegans";
    RL   Curr Biol. 13:807-818(2003).
    XX
    RN   [4]
    RX   PUBMED; 12769849.
    RA   Grad Y, Aach J, Hayes GD, Reinhart BJ, Church GM, Ruvkun G, Kim J;
    RT   "Computational and experimental identification of C. elegans microRNAs";
    RL   Mol Cell. 11:1253-1263(2003).
    XX
    RN   [5]
    RX   PUBMED; 17174894.
    RA   Ruby JG, Jan C, Player C, Axtell MJ, Lee W, Nusbaum C, Ge H, Bartel DP;
    RT   "Large-scale sequencing reveals 21U-RNAs and additional microRNAs and
    RT   endogenous siRNAs in C. elegans";
    RL   Cell. 127:1193-1207(2006).
    XX
    RN   [6]
    RX   PUBMED; 19460142.
    RA   Kato M, de Lencastre A, Pincus Z, Slack FJ;
    RT   "Dynamic expression of small non-coding RNAs, including novel microRNAs
    RT   and piRNAs/21U-RNAs, during Caenorhabditis elegans development";
    RL   Genome Biol. 10:R54(2009).
    XX
    RN   [7]
    RX   PUBMED; 20062054.
    RA   Zisoulis DG, Lovci MT, Wilbert ML, Hutt KR, Liang TY, Pasquinelli AE, Yeo
    RA   GW;
    RT   "Comprehensive discovery of endogenous Argonaute binding sites in
    RT   Caenorhabditis elegans";
    RL   Nat Struct Mol Biol. 17:173-179(2010).
    XX
    DR   RFAM; RF00027; let-7.
    DR   WORMBASE; C05G5/12462-12364; .
    XX
    CC   let-7 is found on chromosome X in Caenorhabditis elegans [1] and pairs to
    CC   sites within the 3' untranslated region (UTR) of target mRNAs, specifying
    CC   the translational repression of these mRNAs and triggering the transition
    CC   to late-larval and adult stages [2].
    XX
    FH   Key             Location/Qualifiers
    FH
    FT   miRNA           17..38
    FT                   /accession="MIMAT0000001"
    FT                   /product="cel-let-7"
    FT                   /evidence=experimental
    FT                   /experiment="cloned [1-3,5], Northern [1], PCR [4], Solexa
    FT                   [6], CLIPseq [7]"
    FT   miRNA           56..80
    FT                   /accession="MIMAT0015091"
    FT                   /product="cel-let-7*"
    FT                   /evidence=experimental
    FT                   /experiment="CLIPseq [7]"
    XX
    SQ   Sequence 99 BP; 26 A; 19 C; 24 G; 0 T; 30 other;
         uacacugugg auccggugag guaguagguu guauaguuug gaauauuacc accggugaac        60
         uaugcaauuu ucuaccuuac cggagacaga acucuucga                               99
    //
    ID   cel-lin-4         standard; RNA; CEL; 94 BP.
    XX
    AC   MI0000002;
    .................etc
    Je veux stocker dans une ArrayList toutes les lignes concernant un seul ID, qui sont donc comprises entre les lignes commençant par "ID" et "//".

    Voilà mon bout de code :


    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
    recherche = saisiemirna.getText();
    longrecherche = recherche.length();
     
    //lecture du fichier texte	
    try
    {
    InputStream ips=new FileInputStream(datamicrorna); 
    InputStreamReader ipsr=new InputStreamReader(ips);
    BufferedReader br=new BufferedReader(ipsr);
     
    String ligne;
     
    while ((ligne=br.readLine())!=null)
    {
    listlignesmirbase.add(ligne);
    }
     
    String[] tabdonneesmirbase = (String[])listlignesmirbase.toArray(new String[listlignesmirbase.size()]);
     
    int posID = 0;
    int pos1dbleslash = 0; 				
    int k = tabdonneesmirbase.length;
     
    // j'ajoute la 1ère ligne concernant le microRNA dans la liste
    for (int i=0; i<k; i++)
    {
    if ((tabdonneesmirbase[i].regionMatches(5, recherche , 0, longrecherche)==true))
       	{
                 listlignesmicrorna.add(tabdonneesmirbase[i]);
                 posID=i+1;
       	}
    }
     
    // je cherche la case du tableau contenant le "//" successif
    for (int j=posID; j<k; j++)
    {
    if ((tabdonneesmirbase[j].regionMatches(0, "//" , 0, 2)==true))
       	{
       	pos1dbleslash=j+1;
       	}
    }
     
    // j'ajoute le reste des données à ma liste
    while (posID<pos1dbleslash)
    {
    listlignesmicrorna.add(tabdonneesmirbase[posID]);  // SATURATION !
    posID++;
    }

    Encore un problème de mémoire :s

  14. #14
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    posID et pos1dbleslash valent quoi avant de rentrer dans la boucle??

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    posID et pos1dbleslash sont initialisées à 0 au départ.

    J'affecte la position dans le tableau de l'ID qui m'intéresse à la première et j'affecte la position dans le tableau du double slash qui le succède à la deuxième.

    Ensuite j'ajoute les contenus des cases situées entre ces deux cases à mon ArrayList listlignesmicrorna et c'est ça qui semble saturer la mémoire, alors qu'il n'y a que quelques lignes à ajouter seulement.

  16. #16
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    oui mais, juste avant ta boucle, ils ont quelle valeur? Vérifie ça!

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    Ok.

    J'ai vérifié les valeurs de posID et de pos1dbleslash juste avant la boucle et elles ont respectivement les valeurs 27958 et 492036. Il n'y a pas autant de lignes entre mes bornes "ID" et "//", en fait pos1dbleslash est la position du tout dernier "//" à la fin du fichier, ce que je ne veux pas.

  18. #18
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Citation Envoyé par phoenix420 Voir le message
    Ok.

    J'ai vérifié les valeurs de posID et de pos1dbleslash juste avant la boucle et elles ont respectivement les valeurs 27958 et 492036. Il n'y a pas autant de lignes entre mes bornes "ID" et "//", en fait pos1dbleslash est la position du tout dernier "//" à la fin du fichier, ce que je ne veux pas.
    normal

    une fois trouver tu ne sort pas de tes boucle:
    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
    for (int i=0; i<k; i++)
    {
    if ((tabdonneesmirbase[i].regionMatches(5, recherche , 0, longrecherche)==true))
       	{
                 listlignesmicrorna.add(tabdonneesmirbase[i]);
                 posID=i+1;
    break;
       	}
    }
    	   				
    // je cherche la case du tableau contenant le "//" successif
    for (int j=posID; j<k; j++)
    {
    if ((tabdonneesmirbase[j].regionMatches(0, "//" , 0, 2)==true))
       	{
       	pos1dbleslash=j+1;
    break;
       	}
    ou en mieu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while(!tabdonneesmirbase[posID].regionMatches(5, recherche , 0, longrecherche))
    	{
    	posID++;
    	}
    pos1dbleslash=posID;
    while(!tabdonneesmirbase[pos1dbleslash].regionMatches(0, "//" , 0, 2))
    	{
    	pos1dbleslash++;
    	}

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

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 139
    Par défaut
    Super l'astuce ! Merci beaucoup, c'est parfait !

    Je n'aurais pas pensé à aborder le problème de cette manière en effet.

    Merci encore !

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

Discussions similaires

  1. Problème mémoire Java heap space avec tableau et ArrayList
    Par phoenix420 dans le forum Collection et Stream
    Réponses: 45
    Dernier message: 22/06/2010, 10h01
  2. [Info] Chargement image et Java heap space
    Par dazz_x dans le forum Langage
    Réponses: 9
    Dernier message: 11/09/2007, 11h51
  3. [jarsigner] java heap space
    Par GLDavid dans le forum Langage
    Réponses: 3
    Dernier message: 16/08/2006, 11h35
  4. Eclipse erreur : java.lang.OutOfMemoryError: Java heap space
    Par sderecourt dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/04/2006, 11h28
  5. [ memoire ] Java Heap Space
    Par natha dans le forum Général Java
    Réponses: 10
    Dernier message: 23/01/2006, 11h15

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