Bonjour,
J'ai un programme qui utilise beaucoup de mémoires, c'est normal mais depuis peu je rencontre un problème que j'ai du mal à cerner. J'ai quelques pistes ais un expert pourra peut être m'aider.
Citation :
java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.resize(HashMap.java:462)
at java.util.HashMap.addEntry(HashMap.java:755)
at java.util.HashMap.put(HashMap.java:385)
at java.util.HashSet.add(HashSet.java:200)
at java.util.AbstractCollection.addAll(AbstractCollection.java:305)
at MON_SOURCE(file.java:116)
|
En gros la ligne 116 c'est :
Code :
- Set<String> set;
- Set<String> set2;
- ....
- set.addAll(set2);
|
Apparemment le Set utilise une hash pour gérer l'unicité des données. Lors de l'ajout d'un élément la hash est redimensionnée, elle doit être trop petite.
J'ai quelques idées :
- initialiser la hash table du set avec une plus grande valeur pour éviter le redimensionnement
- utiliser mon propre set -> cette idée n'est pas génial, on doit pouvoir s'en sortir avec le Set java
- augmenter la taille max du heap est hors de questions, elle est déjà bien grande.
Je vais continuer mes investigations mais si vous avez des idées merci de m'en faire part
edi ---
arg je suis bête, je viens de voir que mon Set est construit avec "new HashSet<String>();"
Message édité par ffomnislash le 23-06-2010 à 11:00:04