ulysse00
Messages postés291Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention12 mai 2013
-
12 mars 2007 à 12:26
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 2011
-
14 mars 2007 à 10:25
salut mes amis
j'ai un grave problème et je voulais bien que vous m'aidez pour m'avancer
j'ai un message java.long.outofMemoryerreur
exception in thread "main"
et une petite fenetre java Virtual Machine launcher
Fatal exception occurred.program will exit.7
thevman
Messages postés83Date d'inscriptionlundi 5 septembre 2005StatutMembreDernière intervention 3 juillet 2008 13 mars 2007 à 11:55
plop,
L'erreur java.lang.OutOfMemoryError apparait quand ta JVM ne peut plus allouer
de mémoire pour un Objet.
Soit tu as une fuite de mémoire... --> regarde ton code (Peut etre une boucle infinie?)
Soit tu demande trop de mémoire par rapport à ton action il faudra alors boosté ta JVM en lui allouant plus de mémoire avec l'option
-Xms et -Xmx
exemple:
java -Xmx100m <-- tu alloue 100 Mo a ta JVM maximun
java -Xms100m <-- tu alloue 100 Mo a ta JVM minimum
ulysse00
Messages postés291Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention12 mai 20131 13 mars 2007 à 12:48
merci pour cette information
just une précision sur le code
j'ai crée un exemple avec 8 enregistrements qui contient trois colonne clé priméraire et transaction et code avec type VARCHAR
voila l'exemple
1 ,1,A
2,1,C
3,2,A
4,2,B
5,3,C
6,3,A
7,4,B
8,4,E
j'ai changé le contenu de la troisième colonne par des nombres INTEGER
14
15
14
16
16
14
15
16
ça marche pas toujours message d'erreur avec le message java.long.outofMemoryerreur
exception in thread "main"
et please comment je dois augmanter la taille de JVM
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 13 mars 2007 à 16:47
Yopla,
ben thevman t as donné la solution juste au dessus. De tte facon je pense que c est une erreur de boucle infinie comme il l a dit ou un truc dans le genre.
Tu peux néanmoins faire System.gc() pour appeler explicitement le garbage collector.
Ca peut arriver aussi sur des algos récursifs.
Mets des traces ou mets toi en debug pour voir ou ca plante !!
++ Toinou
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 14 mars 2007 à 10:25
Yopla !!
alors comment expliquer ...
La JVM s execute dans un espace mémoire qui est limité à l origine à 64Mo (je crois). Si ton prog utilise beaucoup de ressources il risque de dépasser cette mémoire ce qui fait que t as un OutOfMemoryError. Normalement le garbage collector s execute tout seul pour récupérer les objets non utilisés et les virer de la mémoire, ce qui te laisse de la place pour de nouvelles allocations d objets.
Mais des fois en "trop peu de temps" tu peux en créer trop et ca pète comme ca a l air d etre ton cas. D ou tu peux appeler explicitement le garbage collector (normalement c est fait automatiquement) pour lui dire "maintenant vire tout ce qui n est plus utilisé" avec System.gc() .
Ca peut marcher mais ca peut aussi ne pas marcher. :p
Donc ce que te propose thevman c est qu au lieu de faire executer la JVM dans un espace limité à 64Mo tu lui dis au démarrage d'en prendre plus comme ca t as moins de chances que ca pete.
Donc au lieu de faire
java MonMain
tu fais
java -Xmx256m MonMain
et ta JVM s executera dans un espace de 256Mo.
Nénamoins si tu es débutant la plus souvent c est une erreur de programmation qui fait cette erreur et non une trop grosse allocation d objet.
D'où on te disait que tu devait faire une boucle infinie ou un algo récursif qui boucle trop.
Après tout ca on peut pas plus t aider sans voir ton code, l origine du probleme pouvant etre du a de nombreuses causes.