Un message d'erreur avec l'affichage

ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 - 12 mars 2007 à 12:26
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Derniè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

et le driver jdbc
mysql-connector-jwa-5.0.4

5 réponses

thevman Messages postés 83 Date d'inscription lundi 5 septembre 2005 Statut Membre Derniè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

 Nare Trouvé !!!
0
ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 1
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
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
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
0
ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 1
13 mars 2007 à 20:02
merci encore mes amis mais je suis encore débutant je vient de lire un doc sur  le site http://www.laltruiste.com/coursjava/gc_methodesgc.html' target='_blank'>http://www.laltruiste.com/document.php?url=http://www.laltruiste.com/coursjava/gc_methodesgc.html  mais je ne sais pas comment l'utiliser   dans mon code
mes amis je coince encore  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
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.

++ Toinou
0
Rejoignez-nous