Bonjour à tous,
J'utilise un grand nombre de TreeMap dans mon programme, ce qui fait que j'obtiens régulièrement l'erreur suivante :
java.lang.OutOfMemoryError: GC overhead limit exceeded
Ne sachant pas comment représenter ce que je souhaite d'une manière plus légère, je viens tenter de vous soutirer des conseils.
Voici donc mon problème. J'ai un très grand nombre d'éléments et un tableau de double qui contient les distances entre ces éléments.
1 2
| /* Supposons que j'ai 3000 elements */
double[][] t = double[3000][3000]; |
t[i][j] représente la distance entre l'élément d'indice i et l'élément d'indice j.
Je souhaite pouvoir connaître rapidement les plus proches voisins (au sens de t) de chaque élément. C'est là que j'ai utilisé des TreeMap. Pour chaque élément i, j'ai construit une TreeMap contenant l'ensemble des autres éléments ordonnés en fonction de leur distance à i (ie : on ordonne les éléments j en fonction de t[i][j]).
C'est comme cela que j'obtiens énormément de TreeMap et que je dépasse la mémoire. Je pourrais recalculer à chaque fois que j'en ai besoin les voisins d'un élément mais ce serait beaucoup trop long.
Y aurait-il une structure de donnée qui me permette de faire en prenant moins de place ?
Merci d'avance pour votre aide !
Partager