Comment gerer les OutOfMemoryError ? [Résolu]

amauryxiv 84 Messages postés jeudi 13 janvier 2005Date d'inscription 3 août 2017 Dernière intervention - 18 mai 2005 à 19:32 - Dernière réponse : amauryxiv 84 Messages postés jeudi 13 janvier 2005Date d'inscription 3 août 2017 Dernière intervention
- 20 mai 2005 à 13:47
Salut a tous.

Je voudrais faire un programme qui suppose de faire un objet genre arbre, mais énorme. Et je voudrais que le programme s'arrete de remplir l'arbre avnt qu'une OutOfMemoryError ne survienne.

Quelqu'un aurait-il une idée de comment faire ça ?

Merci d'avance.


Afficher la suite 

Votre réponse

7 réponses

cs_neodante 2837 Messages postés lundi 11 août 2003Date d'inscription 16 décembre 2006 Dernière intervention - 19 mai 2005 à 09:29
+3
Utile
Salut



Fais un java -X pour avoir tous les paramètres étendus. Les paramètres -Xms, -Xmx et -Xss devraient pouvoir te satisfaire ...



@+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_neodante
dmaillet 500 Messages postés mercredi 20 août 2003Date d'inscription 11 juillet 2007 Dernière intervention - 19 mai 2005 à 09:33
+3
Utile
hum, d'apres ce que j'ai compris, c'est en "live" qu'il faut verifier la memoire restante...

et sur la machine sur lequel le prog tourne...

mais c'est vrai que tu peux aussi augmenter la taille de ton heap

par un -Xmx256m par exemple pour allouer 256Mo direct a ta jvm

mais ajoute qd meme un test pour t'arreter avant le out of memory

si vraiment ton arbre peut etre immense... et variable.

-------------------
dams
-------------------
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de dmaillet
dmaillet 500 Messages postés mercredi 20 août 2003Date d'inscription 11 juillet 2007 Dernière intervention - 19 mai 2005 à 09:08
0
Utile
Utilise la classe Runtime et recupere la memoire dispo pour la jvm:

Runtime r = Runtime.getRuntime();

et tu as:

r.freeMemory();

r.totalMemory();

r.maxMemory();
...

je te laisse decouvrir le reste...
-------------------
dams
-------------------
Commenter la réponse de dmaillet
cs_neodante 2837 Messages postés lundi 11 août 2003Date d'inscription 16 décembre 2006 Dernière intervention - 19 mai 2005 à 09:29
0
Utile
Salut



Ajuste la pile ou ton tas en fonction de tes besoins ... essaye le tas en premier ...



@+
Commenter la réponse de cs_neodante
cs_neodante 2837 Messages postés lundi 11 août 2003Date d'inscription 16 décembre 2006 Dernière intervention - 19 mai 2005 à 13:14
0
Utile
Salut

Effectivement le mieux c'est de vérifier à l'exécution ... maintenant que je ne marche plus au radar je vois mieux ton prob ...


En fait un prob similaire m'était arrivé mais c'était la taille de la pile qui me faisait défaut donc j'ai mis ça sans trop réfléchir !


Désolé !


Cependant mettre ton arbre complet en mémoire n'est peut-être pas la bonne méthode .. pense à scinder ton arbre et a ne montrer que la partie visible ou au pire si tu fais des calculs tris dessus pense aux tris externes (quand la mémoire est insuffisante pour trier en mémoire) ...

@+
Commenter la réponse de cs_neodante
dmaillet 500 Messages postés mercredi 20 août 2003Date d'inscription 11 juillet 2007 Dernière intervention - 19 mai 2005 à 13:26
0
Utile
Oui, si tu peux construire ton arbre a la volee, ce sera mieux...

C'est par exemple ce que l'on fait generalement qd il s'agit d'explorateur de fichiers...

T'imagine s'il fallait tout scanner avant d'afficher l'arbre?!?

-------------------
dams
-------------------
Commenter la réponse de dmaillet
amauryxiv 84 Messages postés jeudi 13 janvier 2005Date d'inscription 3 août 2017 Dernière intervention - 20 mai 2005 à 13:47
0
Utile
Merci a tous de vos reponse. Mais de toutes facons je laisse tomber le prog.
Je voulais faire un joueur d'echecs, j'avais un algo qui reflechit bien, mais il est tellement lent (10mn pour anticiper 3 coups)que je laisse tomber l'affaire.

Merci ancore ! Amicalement.


Commenter la réponse de amauryxiv

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.