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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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+
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+
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+