[resolu] List et explosion de la conso mémoire

List et explosion de la conso mémoire [resolu] - Java - Programmation

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

---------------
)><(((((°>
Reply

Marsh Posté le 30-07-2008 à 15:01:16   

Reply

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.


Message édité par el muchacho le 30-07-2008 à 22:24:53

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

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(


---------------
)><(((((°>
Reply

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.
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(


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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed