OVH Cloud OVH Cloud

Java et la memoire

2 réponses
Avatar
TuxPierre
Salut

J'ai un petit problème avec Java. Je fais des petits programmes qui manipule des
grosses quantités de données (ex : un prog de tri avec des tableaux de plusieurs
centaines de millions d'éléments (dans le cadre d'un test C/Java avec le tri pas
tas et le QuickSort)) et j'obtiens : java.lang.OutOfMemoyError.
Je connais l'option -Xmx mais je ne la trouve pas tres pratique. Existe t'il
d'autres moyens ??
Autre question : comment connaitre la taille mémoire utilisé par notre programme
(via une méthode Java bien sur) et l'occupation mémoire des élements ??
Merci
--
Ce message a été posté via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr

http://forums.club-internet.fr/

2 réponses

Avatar
Nicolas Delsaux
Le 16.12 2003, TuxPierre s'est levé et s'est dit : "tiens, si j'écrivais
aux mecs de fr.comp.lang.java ?"


Salut

J'ai un petit problème avec Java. Je fais des petits programmes qui
manipule des grosses quantités de données (ex : un prog de tri avec
des tableaux de plusieurs centaines de millions d'éléments (dans le
cadre d'un test C/Java avec le tri pas tas et le QuickSort))


Et comme un malin, tu dois sûrement utiliser un tableau ?
Penses aux collections, et notamment au TreeSet.

et
j'obtiens : java.lang.OutOfMemoyError. Je connais l'option -Xmx mais
je ne la trouve pas tres pratique. Existe t'il d'autres moyens ??


Non.

Autre question : comment connaitre la taille mémoire utilisé par notre
programme (via une méthode Java bien sur) et l'occupation mémoire des
élements ?? Merci


Ca n'existe pas, sauf en utilisant par exemple un profiler (jprofiler et
autres).

--
Nicolas Delsaux
"Un foie, deux reins, trois raisons d'utiliser la baïonnette."
Pierre Desproges

Avatar
Kupee
TuxPierre wrote:
J'ai un petit problème avec Java. Je fais des petits programmes qui manipule des
grosses quantités de données (ex : un prog de tri avec des tableaux de plusieurs
centaines de millions d'éléments (dans le cadre d'un test C/Java avec le tri pas
tas et le QuickSort)) et j'obtiens : java.lang.OutOfMemoyError.
Je connais l'option -Xmx mais je ne la trouve pas tres pratique. Existe t'il
d'autres moyens ??
Autre question : comment connaitre la taille mémoire utilisé par notre programme
(via une méthode Java bien sur) et l'occupation mémoire des élements ??


Je suis tombé sur des projets assez intéréssants pour optimiser certains
types de traitements, niveau vitesse comme mémoire (en effet les
Hashtable, ArrayList et toutes les map, set & cie de l'api java ne
fonctionnent qu'avec des Objets et jamais des types primitifs, ce qui
ralenti énormément si on instantie des Integer alors qu'on voudrait
mettre des int pour les clefs par exemple.)
Enfin bref des types ont codé des tonnes de classes pour remplacer ces
objets de l'api et apparament c'est efficace.
Voilà ceux que j'ai trouvé :
http://fastutil.dsi.unimi.it/ (d'autres trucs intéréssants dedans aussi,
entre autre un objet qui remplace le StringBuffer)
et http://trove4j.sourceforge.net/ qui est utilisé dans Intellij Idea,
ce qui est probablement un gage d'une certaine fiabilité et efficacité.
Après je ne les ai pas encore testé tous les 2, et donc je ne sais pas
si l'un est meilleur que l'autre
a+