cs_amelA
Messages postés83Date d'inscriptionjeudi 17 novembre 2005StatutMembreDernière intervention23 juin 2007
-
15 avril 2007 à 18:54
cs_amelA
Messages postés83Date d'inscriptionjeudi 17 novembre 2005StatutMembreDernière intervention23 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.
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 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
cs_amelA
Messages postés83Date d'inscriptionjeudi 17 novembre 2005StatutMembreDernière intervention23 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.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_amelA
Messages postés83Date d'inscriptionjeudi 17 novembre 2005StatutMembreDernière intervention23 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?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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.
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 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
cs_amelA
Messages postés83Date d'inscriptionjeudi 17 novembre 2005StatutMembreDernière intervention23 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+
cs_amelA
Messages postés83Date d'inscriptionjeudi 17 novembre 2005StatutMembreDernière intervention23 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.