[JAVA] java.lang.OutOfMemoryError, comment résoudre ce pb svp ?

java.lang.OutOfMemoryError, comment résoudre ce pb svp ? [JAVA] - Java - Programmation

Marsh Posté le 15-01-2007 à 11:12:04    

Bonjour,
 
J'ai une application métier qui plante de maniere aléatoire :
 
- JVM : 1.3.1-b24
- OS : Windows 2000 Server SP4 (environnement citrix)
- Consommation mémoire : entre 30 Et 80Mo
- Mémoire serveur : 2.5Go
 
Cette application est exécutée par 10-20 utilisateurs sur le serveur.
 
Lors du plantage, voilà le message qui revient systématiquement dans le log :
 
Exception occurred during event dispatching:
java.lang.OutOfMemoryError
 <<no stack trace available>>

 
Je précise que je ne connais absolument rien en programmation.
Si qq a une idée pou résoudre ce problème, merci d'avance


Message édité par flashy_fiber le 15-01-2007 à 11:12:29
Reply

Marsh Posté le 15-01-2007 à 11:12:04   

Reply

Marsh Posté le 15-01-2007 à 11:27:22    

java -Xms512m  -Xmx1024m

Reply

Marsh Posté le 15-01-2007 à 11:58:00    

ok merci pour l'info.
 
Je suppose que cette commande permet d'allouer de 512Mo à 1024Mo ?
 
 
Peux tu m'indiquer stp à quel endroit faut il la placer ? dans le code source du programme, ou bien à l'aide d'un raccourci, par ex si l'appli s' appelle abc.jar , je peux faire un raccourci  du genre:  
 
"java -Xms512m  -Xmx1024m abc.jar" ?
 

Reply

Marsh Posté le 15-01-2007 à 12:05:36    

Super la soluce :/ plutot que de traquer le memory leak, on augmente la ram allouee. Ca ne fait que retarder le probleme.
 
Utilise plutot un profiler pour regarder ou tu perds de la memoire.

Reply

Marsh Posté le 15-01-2007 à 12:10:35    

gizmo a écrit :

Super la soluce :/ plutot que de traquer le memory leak, on augmente la ram allouee. Ca ne fait que retarder le probleme.
 
Utilise plutot un profiler pour regarder ou tu perds de la memoire.


 
Comme je disais je n'y connais absolument en programmation.
Pour le profiler, sais tu ou je peux en trouver un ? car effectivement je souhaiterai aussi savoir, à partir de combien de mémoire utilisée ça plante......

Reply

Marsh Posté le 15-01-2007 à 12:13:37    

JProfiler fait ça très bien, et si c'est une appli métier qui n'est pas développée chez vous il faudrait faire remonter le truc au fournisseur de l'appli non?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-01-2007 à 12:14:42    

Hum, si tu n'y connais rien en Prog, ca va pas aider d'avoir un profiler, car t'as besoin des sources pour avoir le detail etc...
Mais ajouter de la memoire ne fera que retarder le probleme, car, a moins de manipulations exceptionnelles de gros volumes d'information, te ne devrais jamais obtenir un OutOfMemory.

Reply

Marsh Posté le 15-01-2007 à 12:21:48    

masklinn a écrit :

JProfiler fait ça très bien, et si c'est une appli métier qui n'est pas développée chez vous il faudrait faire remonter le truc au fournisseur de l'appli non?


 
 
Ok merci pour l'info, je vais voir de ce coté. En fait le développement de l'appli est fini depuis un bon moment, mais il restait qq bug aléatoire comme celui là. Et dans notre équipe actuelle, je vais pouvoir passer l'info.

Reply

Marsh Posté le 15-01-2007 à 12:23:28    

gizmo a écrit :

Hum, si tu n'y connais rien en Prog, ca va pas aider d'avoir un profiler, car t'as besoin des sources pour avoir le detail etc...
Mais ajouter de la memoire ne fera que retarder le probleme, car, a moins de manipulations exceptionnelles de gros volumes d'information, te ne devrais jamais obtenir un OutOfMemory.


 
Je vais communiquer l'outil à une personne de l'equipe qui travaille avec les sources
En fait le programme en question fait appel à de grosses bases de données, il serait donc interessant de voir ce qui pose probleme exactement

Reply

Marsh Posté le 15-01-2007 à 13:52:44    

gizmo a écrit :

Hum, si tu n'y connais rien en Prog, ca va pas aider d'avoir un profiler, car t'as besoin des sources pour avoir le detail etc...
Mais ajouter de la memoire ne fera que retarder le probleme, car, a moins de manipulations exceptionnelles de gros volumes d'information, te ne devrais jamais obtenir un OutOfMemory.


 
Cette page :
 
http://java.sun.com/j2se/1.5.0/doc [...] /java.html
 
indique que la mémoire maximale que Java peut allouer par défaut (valeur par défaut de l'option -Xmx) vaut 64 Mo. Tout dépend de l'application, mais cela ne me paraît pas une limite atteignable seulement avec des manipulations "exceptionnelles" de données... Pour ma part, je travaille quotidiennement sur les applications qui manipulent des volumes de données bcp + importants.
 
D'autre part, comment peut-on avoir un memory leak en Java ? Dans les langages où la mémoire est désallouée par le programmeur, cela correspondrait (dans mon interprétation) à une désallocation oubliée. En Java le garbage collector le fait pour nous, je ne vois pas comment on peut avoir un memory leak. A la limite en ayant des objets plus utilisés mais encore atteignables dans le graphe d'objets : il faut vraiment très mal coder pour ça. Non ?


Message édité par boulgakov le 15-01-2007 à 13:53:40
Reply

Marsh Posté le 15-01-2007 à 13:52:44   

Reply

Marsh Posté le 15-01-2007 à 14:46:12    

Non, il ne faut pas specialement coder tres mal.
 
http://www.google.com/search?clien [...] 8&oe=utf-8

Reply

Marsh Posté le 15-01-2007 à 15:10:51    

gizmo a écrit :

Super la soluce :/ plutot que de traquer le memory leak, on augmente la ram allouee. Ca ne fait que retarder le probleme.
 
Utilise plutot un profiler pour regarder ou tu perds de la memoire.


Ma soluce est proportionnelle au niveau de détail d'information qu'il a donné. On n'a strictement aucune info sur son appli (standalone, gui, J2EE ?).
 
De plus la consommation mémoire élevée peut être du à une brique développé en externe donc il n'aura d'autre choix d'augmenter la mémoire.

Reply

Marsh Posté le 15-01-2007 à 15:28:25    

phnatomass a écrit :

Ma soluce est proportionnelle au niveau de détail d'information qu'il a donné. On n'a strictement aucune info sur son appli (standalone, gui, J2EE ?).
 
De plus la consommation mémoire élevée peut être du à une brique développé en externe donc il n'aura d'autre choix d'augmenter la mémoire.


 
je sais pas si t'avais vu, suite à ta réponse je voulais savoir stp :
 
"
Je suppose que cette commande permet d'allouer de 512Mo à 1024Mo ?
 
Peux tu m'indiquer stp à quel endroit faut il la placer ? dans le code source du programme, ou bien à l'aide d'un raccourci, par ex si l'appli s' appelle abc.jar , je peux faire un raccourci  du genre:  
 
"java -Xms512m  -Xmx1024m abc.jar" ? "
 

Reply

Marsh Posté le 15-01-2007 à 16:48:46    

flashy_fiber a écrit :

"java -Xms512m  -Xmx1024m abc.jar" ? "


ouais
java -Xms512m  -Xmx1024m -jar abc.jar

Reply

Marsh Posté le 15-01-2007 à 16:55:07    

phnatomass a écrit :

ouais
java -Xms512m  -Xmx1024m -jar abc.jar


 
ok merci pour l'info, je vais regarder aussi en parallele le profiler

Reply

Marsh Posté le 15-01-2007 à 17:37:36    

putain mais rtfm :O

Reply

Marsh Posté le 15-01-2007 à 17:38:25    


Hay toi tu m'as toujours pas répondu enfoiré de communiste de merde :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-01-2007 à 17:47:06    

euh ?
répondu a quoi ?

Message cité 1 fois
Message édité par the real moins moins le 15-01-2007 à 17:47:32
Reply

Marsh Posté le 15-01-2007 à 17:54:40    

Code :
  1. catch (OutOfMemoryError e) {
  2.     System.gc();
  3. }


Et c'est dans la poche    [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 15-01-2007 à 18:02:41    

the real moins moins a écrit :

euh ?
répondu a quoi ?


Mes questions dans blablaprog sur ta toolchain XML [:thalis]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-01-2007 à 18:15:36    

genre je lis blablaprog ?

Reply

Marsh Posté le 15-01-2007 à 18:19:37    

the real moins moins a écrit :

genre je lis blablaprog ?


REPONDEZ A LA QUESTION 888


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-01-2007 à 18:20:39    

euh ben pose la à un endroit ou je la verrai et on verra si on peut voir, hein [:mlc]

Reply

Marsh Posté le 15-01-2007 à 18:26:42    

Ben c'est quoi ta toolchain XML [:mlc]


Message édité par masklinn le 15-01-2007 à 18:27:01

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-01-2007 à 18:32:12    

euh, tu veux dire genre quels outils j'utilise pour éditer du xml a la main ? [:mlc] j'ai une tete de specialiste d'xml ? [:mlc]
rien a part intellij - qui a quand meme un excellent editeur integré [:mlc] et TextWrangler [:mlc]
un jour j'avais codé un espece de machin viteuf pour faire du search/replace en xpath, faute de trouver un outil valable qui le fasse [:mlc]


Message édité par the real moins moins le 15-01-2007 à 18:32:32
Reply

Marsh Posté le 15-01-2007 à 18:57:59    

Ptain mais t'es un javateux merde [:mlc]
T'es censé bouffer du XML pour ton ptit dej [:mlc]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-01-2007 à 18:59:31    

spa pour ca que je me l'edite la main [:mlc]

Reply

Marsh Posté le 15-01-2007 à 19:22:57    

the real moins moins a écrit :

spa pour ca que je me l'edite la main [:mlc]


Mais j'm'en fous, je veux juste les noms des outils que tu utilises pour faire du XML, que tu l'édites à la main ou en drag&droppant des boiboites j'm'en fous je veux des noms [:mlc]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-01-2007 à 19:25:30    

non mais ni l'un ni l'autre, je l'edite pas, stout [:mlc]
pour le reste, j'ai repondu [:mlc]

Reply

Marsh Posté le 15-01-2007 à 21:46:05    

C4EST PAS BLABLA ICI ET ON EST PAS VENDREDI 888 /MLC/

Reply

Marsh Posté le 16-01-2007 à 01:16:15    

gizmo a écrit :

Non, il ne faut pas specialement coder tres mal.
 
http://www.google.com/search?clien [...] 8&oe=utf-8


 
Ah OK, pour une appli qui tourne en continu. Je fais du calcul scientifique, je rencontre le problème plutôt en C++ quand j'alloue un pointeur sans le détruire dans une boucle qui est exécutée des milliards de fois. A la limite c'est plus facile à voir, la plupart du temps le PC est à genoux en 10 secondes. Au temps pour moi.

Reply

Marsh Posté le 16-01-2007 à 02:16:42    

masklinn a écrit :

Mais j'm'en fous, je veux juste les noms des outils que tu utilises pour faire du XML, que tu l'édites à la main ou en drag&droppant des boiboites j'm'en fous je veux des noms [:mlc]

 

remplissage récursif par application successives de ptites feuilles XSL, comme ça t'es sûr qu'à tout moment de l'édition le fichier est valide :o


Message édité par 0x90 le 16-01-2007 à 02:16:50

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 19-01-2007 à 11:12:45    

sircam a écrit :

Code :
  1. catch (OutOfMemoryError e) {
  2.     System.gc();
  3. }


Et c'est dans la poche    [:pingouino]


 
A partir du moment où tu as un OutOfMemoryError, ce n'est pas la peine d'essayer de catcher l'exception et de réparer le bousin.
 
Ton appli est dans un état non déterminé et il vaut mieux la laisser mourrir dignement ! :p
 
Et en plus je ne suis même pas sur que tu rentres dans ton block catch...

Reply

Marsh Posté le 19-01-2007 à 11:17:54    

ben si t'es pas sûr, évite de donner des leçons, ça vaut mieux [:mullet]

Reply

Marsh Posté le 19-01-2007 à 11:20:11    

Non mais le block catch, c'était pour rire, hein! [:alph-one]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 19-01-2007 à 11:30:28    

sircam a écrit :

Non mais le block catch, c'était pour rire, hein! [:alph-one]


 
Oups autant pour moi, j'avais pas relevé le [:pingouino] sarcastique

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed