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

Java Discussion :

TreeMap : OutOfMemory


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 121
    Par défaut TreeMap : OutOfMemory
    Bonjour à tous,

    J'utilise un grand nombre de TreeMap dans mon programme, ce qui fait que j'obtiens régulièrement l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    De simples tableaux que tu garderais ordonnés par toi-même, ça occuperait moins de place.

    Mais bon, il n'y a pas de miracle : si ça passe pas en mémoire, il faut enregistrer dans des fichiers. Bah oui, c'est long. Sinon, tu peux aussi acheter quelques Exaoctets de mémoire et la carte mère capable de les adresser.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Par défaut Arguments
    Salut,
    Est ce que tu as essayé d’allouer plus de mémoire a ta JVM ou si c'est sur un serveur (Tomcat par exemple) :
    -Xms512m
    -Xmx1024m
    Juste pour voir si tu pourra eviter le heap space.


Discussions similaires

  1. Problème OutOfMemory dans une applet
    Par hotkebab99 dans le forum Applets
    Réponses: 1
    Dernier message: 25/01/2006, 10h36
  2. [OutOfMemory] probleme de delestage
    Par pierre.zelb dans le forum Général Java
    Réponses: 14
    Dernier message: 06/07/2005, 13h05
  3. [TreeMap] comparer et fusionner deux TreeMap
    Par LoLoSS dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 06/09/2004, 11h49
  4. [JVM] OutOfMemory
    Par datalifeplus dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 19/08/2004, 00h43
  5. [OutOfMemory]Configuration mémoire
    Par thebubble dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 17/02/2004, 15h27

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