List et explosion de la conso mémoire [resolu] - Java - Programmation
Marsh Posté le 30-07-2008 à 22:17:34
Oui, Vector est un très mauvais choix dans ton cas parce que la mémoire se doit d'être contigüe. Idem pour ArrayList. Prends LinkedList. Et vérifie la consommation mémoire d'une seule structure pour savoir combien le total va te coûter.
Marsh Posté le 31-07-2008 à 14:36:29
Merci pour la précision, ces listes me paraissent en effet plus adaptées.
Cependant ce n'était pas la cause de "l'explosion" de ma memoire.
Le problème venait d'une fonction copy() qui faisait n'importe quoi X(
Marsh Posté le 31-07-2008 à 20:46:36
kouby a écrit : Merci pour la précision, ces listes me paraissent en effet plus adaptées. |
les listes ça bouffe plus de mémoire, vu que t'as deux références par maillon en plus. a voir selon ton usage.
Marsh Posté le 30-07-2008 à 15:01:16
Bonjour,
(contexte : linux 2.6, java 1.6, eclipse 3.4)
Je suis en train de faire un package (dans le cadre d'un plugin eclipse) censé reproduire avec plus ou moins de fidélité un ensemble de structures C, lue via des fonctions natives JNI.
A la grosse louche, les structures C occupent 400Mo en mémoire. Cependant en Java, je me prend du outofmemory (>2Go) ...
Les structures C étant principalement des listes chainées (struct blabla { typeX x; ... ; struct blabla* next;}; ), j'ai choisi de représenter ces listes par des List<BlablaClass>. J'ai donc évité d'utiliser des tableaux, et l'implémentation des List que j'utilise est Vector.
Y a-t-il des précautions à prendre quand on veut représenter en java une structure C? (le truc con à savoir et que je sais pas)
Serait-il plus avisé d'utiliser une autre implémentation de List que Vector? (en terme de consommation mémoire)
Est-ce que la consommation mémoire n'a rien à voir avec les liste?
Si oui, d'où vient cette consommation de mémoire astronomique?
merci d'avance
Message édité par kouby le 31-07-2008 à 14:36:59
---------------
)><(((((°>