Java heap space [Résolu]

cs_amelA 83 Messages postés jeudi 17 novembre 2005Date d'inscription 23 juin 2007 Dernière intervention - 15 avril 2007 à 18:54 - Dernière réponse : cs_amelA 83 Messages postés jeudi 17 novembre 2005Date d'inscription 23 juin 2007 Dernière intervention
- 17 avril 2007 à 17:20
Salut,
j'ai un problème de java heap space (Outofmemory) avec mon application web.
sachant que j'ai 512MO de RAM, je sais pas si le problème provient de cela. Je voudrais savoir comment remédier à ce problème.?
J'ai lu qu'il fallait augmenter la taille de la JVM, mais j'ai pas su comment faire et à quel niveau. Sinon y a-t-il d'autres solutions?
Merci pour votre aide.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
super_toinou 764 Messages postés mardi 25 mai 2004Date d'inscription 8 mars 2011 Dernière intervention - 17 avril 2007 à 09:34
3
Merci
t es avec quel ide ??
tu vas dans les config de ton launcher et tu rajoute dans arguments ou JVM Param suivant l ide -Xmx256m et ca ira mieux je pense
++ Toinou

Merci super_toinou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de super_toinou
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 15 avril 2007 à 19:59
0
Merci
Tout dépend du type de ton application.

Dans quel cas cela se produit ? Ne s'agirait-il pas d'une fonction récursive qui boucle par hasard ?
Commenter la réponse de cs_DARKSIDIOUS
cs_amelA 83 Messages postés jeudi 17 novembre 2005Date d'inscription 23 juin 2007 Dernière intervention - 15 avril 2007 à 20:17
0
Merci
Et bien, dans mon application je fait des traitements sur des collections et chaque fonctionnalité de mon programme nécessite la création de collections. Donc les premières fonctionnalités marchent normalement, mais celles que je sollicite en dernier causent le problème de java heap space.  
Il est vrai que j'ai crée beaucoup de collections et justement je cherche comment les détruire, peut être que cela va libérer un peu la mémoire.  
j'attends vos conseils.
Commenter la réponse de cs_amelA
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 15 avril 2007 à 20:23
0
Merci
Pour libérer la mémoire occupée par un objet, il faut que tout les pointeurs vers ses objets soient nuls, donc si tu ajoute un objet à une collection, n'oublie pas de l'enlever dès que tu n'en a plus besoin !

Du style : Collection.removeAll(); ou Collection.clear();

Si tu ne fait pas cà, le garbage collector ne pourra pas faire son travail : libérer la mémoire.
Commenter la réponse de cs_DARKSIDIOUS
cs_amelA 83 Messages postés jeudi 17 novembre 2005Date d'inscription 23 juin 2007 Dernière intervention - 15 avril 2007 à 20:58
0
Merci
Si par exemple la collection1 contient 3 objets: objet1, objet2 et objet3: dans ce cas il faut faire collection1.removeAll(); ou collection1.clear(); ensuite détruire les trois objets?
ou bien le removeAll (ou clear) seul suffit?
Commenter la réponse de cs_amelA
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 15 avril 2007 à 21:05
0
Merci
Tout dépend ce que font tes objets : le removeAll permet de vider la collection => détruire le pointeur vers tes objets.

Ensuite, si tes objets nécessite de détruire d'autres choses, il faut les détruire : si tes objets sont des collections, s'ils contiennent des connexions ouvertes à une base de données, etc.
Commenter la réponse de cs_DARKSIDIOUS
cs_amelA 83 Messages postés jeudi 17 novembre 2005Date d'inscription 23 juin 2007 Dernière intervention - 15 avril 2007 à 21:21
0
Merci
ok très bien, je vais l'essayer, espérant que cela va marcher.


merci.
Commenter la réponse de cs_amelA
super_toinou 764 Messages postés mardi 25 mai 2004Date d'inscription 8 mars 2011 Dernière intervention - 16 avril 2007 à 14:14
0
Merci
Yop yop,

tu peux aussi augmenter la ram que prend ton appli java au cas où ton appli déborde et que ce soit normal (mais bon ca arrive pas non plus tous les jours donc généralement c est plus une erreur de code).
Bref revenons à nos moutons, tu peux augmenter la taille de la jvm : java -Xmx256m ca devrait bien t aider
Sinon tu peux appeler dynamiquement le garbage collector avec System.gc() aux endroits ou ca peux merdouiller. Pour t aider a trouver ou ca va pas tu peux utiliser JProfiler

++ Toinou
Commenter la réponse de super_toinou
cs_amelA 83 Messages postés jeudi 17 novembre 2005Date d'inscription 23 juin 2007 Dernière intervention - 17 avril 2007 à 00:54
0
Merci
Salut,
Finalement la destruction des objets n'a pas résolu mon problème à moins que j'ai mal détruit mes objets. au début j'ai utilisé Collection.clear(); mais j'ai eu pas mal d'erreurs et de bugs. j'ai ensuite remis à null toutes les collections après leur utilisation, et j'ai même utilisé l'instruction System.gc(); mais ça n'a rien donné non plus.
je suppose que c'est un problème de mémoire de la JVM parce qu'au démarrage de Tomcat (sachant que mon application est en web et tourne sous Tomcat) c'est affiché que la mémoire de la JVM est de 66M.
Toute fois je sais pas où je peux placer l'instruction: java -Xmx256m .
Est ce que quelqu'un pourrait m'aider pour le faire.
Merci les amis.
a+
Commenter la réponse de cs_amelA
cs_amelA 83 Messages postés jeudi 17 novembre 2005Date d'inscription 23 juin 2007 Dernière intervention - 17 avril 2007 à 17:20
0
Merci
salut,
effectivement l'ajout de Xmx256m  résout le problème de Java heap space. j'utilise JBuilder et j'ai ajouté ça dans : executer->configuration->[choix de l'application]modifier->paramètre de la VM.


merci
Commenter la réponse de cs_amelA

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.