Java heap space

Résolu
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007 - 15 avril 2007 à 18:54
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007 - 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.

10 réponses

super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
17 avril 2007 à 09:34
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
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 avril 2007 à 19:59
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 ?
0
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007
15 avril 2007 à 20:17
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.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 avril 2007 à 20:23
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.
0

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

Posez votre question
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007
15 avril 2007 à 20:58
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?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 avril 2007 à 21:05
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.
0
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007
15 avril 2007 à 21:21
ok très bien, je vais l'essayer, espérant que cela va marcher.


merci.
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
16 avril 2007 à 14:14
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
0
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007
17 avril 2007 à 00:54
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+
0
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007
17 avril 2007 à 17:20
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
0
Rejoignez-nous