Discussion:
MemoryLeak au déploiement d'un EAR dans Glassfish
Nicolas Delsaux
2011-08-25 10:01:34 UTC
Permalink
Salut
j'ai une application web qui, quand je la déploie régulièrement dans
Glassfish pour le développement, "semble" provoquer des memoryleaks.
C'est à dire qu'à chaque fois que je la redéploie, Glassfish mange 200
Mo.
Evidement, au bout d'un moment, il a mangé toute sa RAM et doit
s'arrêter. Et comme il ne me dit pas quand il veut s'arrêter, je suis
bien embêté.
Alors j'aimerais savoir si vous ne connaîtriez pas un moyen de savoir
ce qui le fait consomer.
J'ai bien sûr lancé JVisualVM, qui m'a confirmé cette augmentation du
heap consomé, mais je n'arrive pas à voir ce qui est consomé.
Tant que j'y suis, dans mon application, j'utilise des resources JDBC
et autres JMS, Neo4J, ... Est-ce que vous sauriez si on peut savoir si
des instances des pools de connexion associés sont conservés ?
Merci

--
Nicolas Delsaux
p***@orange-ftgroup.com
2011-08-25 10:07:40 UTC
Permalink
Salut,
J'ai des problèmes similaires avec mvn:jetty.
Au bout d'un moment ça pète avec un truc "out of permgen space".
J'ai pas encore pris le temps de tracer pourquoi ça me bouffe du permgen car c'est pas critique pour moi.

Ce que je peux te conseiller c'est d'utiliser un profiler/memory debugguer genre Yourkit qui "devrait" te permettre de tracer ce qui est en mémoire assez finement.

My 2 cents,
Patrice
-----Message d'origine-----
Envoyé : jeudi 25 août 2011 12:02
À : * liste Java
Objet : MemoryLeak au déploiement d'un EAR dans Glassfish
Salut
j'ai une application web qui, quand je la déploie régulièrement dans
Glassfish pour le développement, "semble" provoquer des memoryleaks.
C'est à dire qu'à chaque fois que je la redéploie, Glassfish mange 200
Mo.
Evidement, au bout d'un moment, il a mangé toute sa RAM et doit
s'arrêter. Et comme il ne me dit pas quand il veut s'arrêter, je suis
bien embêté.
Alors j'aimerais savoir si vous ne connaîtriez pas un moyen de savoir
ce qui le fait consomer.
J'ai bien sûr lancé JVisualVM, qui m'a confirmé cette augmentation du
heap consomé, mais je n'arrive pas à voir ce qui est consomé.
Tant que j'y suis, dans mon application, j'utilise des resources JDBC
et autres JMS, Neo4J, ... Est-ce que vous sauriez si on peut savoir si
des instances des pools de connexion associés sont conservés ?
Merci
--
Nicolas Delsaux
********************************************************************************
IMPORTANT.Les informations contenues dans ce message electronique y compris les fichiers attaches sont strictement confidentielles
et peuvent etre protegees par la loi.
Ce message electronique est destine exclusivement au(x) destinataire(s) mentionne(s) ci-dessus.
Si vous avez recu ce message par erreur ou s il ne vous est pas destine, veuillez immediatement le signaler a l expediteur et effacer ce message
et tous les fichiers eventuellement attaches.
Toute lecture, exploitation ou transmission des informations contenues dans ce message est interdite.
Tout message electronique est susceptible d alteration.
A ce titre, le Groupe France Telecom decline toute responsabilite notamment s il a ete altere, deforme ou falsifie.
De meme, il appartient au destinataire de s assurer de l absence de tout virus.

IMPORTANT.This e-mail message and any attachments are strictly confidential and may be protected by law. This message is
intended only for the named recipient(s) above.
If you have received this message in error, or are not the named recipient(s), please immediately notify the sender and delete this e-mail message.
Any unauthorized view, usage or disclosure ofthis message is prohibited.
Since e-mail messages may not be reliable, France Telecom Group shall not be liable for any message if modified, changed or falsified.
Additionally the recipient should ensure they are actually virus free.
********************************************************************************
Sebastien Cesbron
2011-08-25 10:10:38 UTC
Permalink
Salut

Si c'est du permgen alors c'est des classes temporaires (styles proxy pour
spring ou hibernate) et c'est lié à un mauvais nettoyage au undeploy. Il n'y
a pas forcément grand chose à faire

Si c'est la heap par contre, il faut la dumper avec visualvm et l'analyser
avec eclipse memory analyzer qui te donnera les infos sur ce qui te prend de
la mem

Seb
Post by p***@orange-ftgroup.com
Salut,
J'ai des problèmes similaires avec mvn:jetty.
Au bout d'un moment ça pète avec un truc "out of permgen space".
J'ai pas encore pris le temps de tracer pourquoi ça me bouffe du permgen
car c'est pas critique pour moi.
Ce que je peux te conseiller c'est d'utiliser un profiler/memory debugguer
genre Yourkit qui "devrait" te permettre de tracer ce qui est en mémoire
assez finement.
My 2 cents,
Patrice
-----Message d'origine-----
Envoyé : jeudi 25 août 2011 12:02
À : * liste Java
Objet : MemoryLeak au déploiement d'un EAR dans Glassfish
Salut
j'ai une application web qui, quand je la déploie régulièrement dans
Glassfish pour le développement, "semble" provoquer des memoryleaks.
C'est à dire qu'à chaque fois que je la redéploie, Glassfish mange 200
Mo.
Evidement, au bout d'un moment, il a mangé toute sa RAM et doit
s'arrêter. Et comme il ne me dit pas quand il veut s'arrêter, je suis
bien embêté.
Alors j'aimerais savoir si vous ne connaîtriez pas un moyen de savoir
ce qui le fait consomer.
J'ai bien sûr lancé JVisualVM, qui m'a confirmé cette augmentation du
heap consomé, mais je n'arrive pas à voir ce qui est consomé.
Tant que j'y suis, dans mon application, j'utilise des resources JDBC
et autres JMS, Neo4J, ... Est-ce que vous sauriez si on peut savoir si
des instances des pools de connexion associés sont conservés ?
Merci
--
Nicolas Delsaux
********************************************************************************
IMPORTANT.Les informations contenues dans ce message electronique y compris
les fichiers attaches sont strictement confidentielles
et peuvent etre protegees par la loi.
Ce message electronique est destine exclusivement au(x) destinataire(s)
mentionne(s) ci-dessus.
Si vous avez recu ce message par erreur ou s il ne vous est pas destine,
veuillez immediatement le signaler a l expediteur et effacer ce message
et tous les fichiers eventuellement attaches.
Toute lecture, exploitation ou transmission des informations contenues dans
ce message est interdite.
Tout message electronique est susceptible d alteration.
A ce titre, le Groupe France Telecom decline toute responsabilite notamment
s il a ete altere, deforme ou falsifie.
De meme, il appartient au destinataire de s assurer de l absence de tout virus.
IMPORTANT.This e-mail message and any attachments are strictly confidential
and may be protected by law. This message is
intended only for the named recipient(s) above.
If you have received this message in error, or are not the named
recipient(s), please immediately notify the sender and delete this e-mail
message.
Any unauthorized view, usage or disclosure ofthis message is prohibited.
Since e-mail messages may not be reliable, France Telecom Group shall not
be liable for any message if modified, changed or falsified.
Additionally the recipient should ensure they are actually virus free.
********************************************************************************
Sébastien Lorber
2011-08-25 10:25:16 UTC
Permalink
Il y a
Post by Sebastien Cesbron
Salut
Si c'est du permgen alors c'est des classes temporaires (styles proxy pour
spring ou hibernate) et c'est lié à un mauvais nettoyage au undeploy. Il n'y
a pas forcément grand chose à faire
Si c'est la heap par contre, il faut la dumper avec visualvm et l'analyser
avec eclipse memory analyzer qui te donnera les infos sur ce qui te prend de
la mem
Seb
Salut,
Post by p***@orange-ftgroup.com
J'ai des problèmes similaires avec mvn:jetty.
Au bout d'un moment ça pète avec un truc "out of permgen space".
J'ai pas encore pris le temps de tracer pourquoi ça me bouffe du permgen
car c'est pas critique pour moi.
Ce que je peux te conseiller c'est d'utiliser un profiler/memory debugguer
genre Yourkit qui "devrait" te permettre de tracer ce qui est en mémoire
assez finement.
My 2 cents,
Patrice
-----Message d'origine-----
Envoyé : jeudi 25 août 2011 12:02
À : * liste Java
Objet : MemoryLeak au déploiement d'un EAR dans Glassfish
Salut
j'ai une application web qui, quand je la déploie régulièrement dans
Glassfish pour le développement, "semble" provoquer des memoryleaks.
C'est à dire qu'à chaque fois que je la redéploie, Glassfish mange 200
Mo.
Evidement, au bout d'un moment, il a mangé toute sa RAM et doit
s'arrêter. Et comme il ne me dit pas quand il veut s'arrêter, je suis
bien embêté.
Alors j'aimerais savoir si vous ne connaîtriez pas un moyen de savoir
ce qui le fait consomer.
J'ai bien sûr lancé JVisualVM, qui m'a confirmé cette augmentation du
heap consomé, mais je n'arrive pas à voir ce qui est consomé.
Tant que j'y suis, dans mon application, j'utilise des resources JDBC
et autres JMS, Neo4J, ... Est-ce que vous sauriez si on peut savoir si
des instances des pools de connexion associés sont conservés ?
Merci
--
Nicolas Delsaux
********************************************************************************
IMPORTANT.Les informations contenues dans ce message electronique y
compris les fichiers attaches sont strictement confidentielles
et peuvent etre protegees par la loi.
Ce message electronique est destine exclusivement au(x) destinataire(s)
mentionne(s) ci-dessus.
Si vous avez recu ce message par erreur ou s il ne vous est pas destine,
veuillez immediatement le signaler a l expediteur et effacer ce message
et tous les fichiers eventuellement attaches.
Toute lecture, exploitation ou transmission des informations contenues
dans ce message est interdite.
Tout message electronique est susceptible d alteration.
A ce titre, le Groupe France Telecom decline toute responsabilite
notamment s il a ete altere, deforme ou falsifie.
De meme, il appartient au destinataire de s assurer de l absence de tout virus.
IMPORTANT.This e-mail message and any attachments are strictly
confidential and may be protected by law. This message is
intended only for the named recipient(s) above.
If you have received this message in error, or are not the named
recipient(s), please immediately notify the sender and delete this e-mail
message.
Any unauthorized view, usage or disclosure ofthis message is prohibited.
Since e-mail messages may not be reliable, France Telecom Group shall not
be liable for any message if modified, changed or falsified.
Additionally the recipient should ensure they are actually virus free.
********************************************************************************
Sébastien Lorber
2011-08-25 10:27:00 UTC
Permalink
Zut...

Il y a une memory leak connue dans CGLIBS/Hibernate a ce sujet.

http://blogs.warwick.ac.uk/colinyates/entry/yeah_hibernate_doesnt/

Je crois qu'on avait regardé avec un archi dans une précédente mission et il
n'y avait pas grand chose a faire a part augmenter la mémoire et redémarrer
le serveur de temps en temps.
Ou peut-etre utilisé une autre lib si c'est possible? (javassist?)
Post by Sébastien Lorber
Il y a
Salut
Post by Sebastien Cesbron
Si c'est du permgen alors c'est des classes temporaires (styles proxy pour
spring ou hibernate) et c'est lié à un mauvais nettoyage au undeploy. Il n'y
a pas forcément grand chose à faire
Si c'est la heap par contre, il faut la dumper avec visualvm et l'analyser
avec eclipse memory analyzer qui te donnera les infos sur ce qui te prend de
la mem
Seb
Salut,
Post by p***@orange-ftgroup.com
J'ai des problèmes similaires avec mvn:jetty.
Au bout d'un moment ça pète avec un truc "out of permgen space".
J'ai pas encore pris le temps de tracer pourquoi ça me bouffe du permgen
car c'est pas critique pour moi.
Ce que je peux te conseiller c'est d'utiliser un profiler/memory
debugguer genre Yourkit qui "devrait" te permettre de tracer ce qui est en
mémoire assez finement.
My 2 cents,
Patrice
-----Message d'origine-----
Envoyé : jeudi 25 août 2011 12:02
À : * liste Java
Objet : MemoryLeak au déploiement d'un EAR dans Glassfish
Salut
j'ai une application web qui, quand je la déploie régulièrement dans
Glassfish pour le développement, "semble" provoquer des memoryleaks.
C'est à dire qu'à chaque fois que je la redéploie, Glassfish mange 200
Mo.
Evidement, au bout d'un moment, il a mangé toute sa RAM et doit
s'arrêter. Et comme il ne me dit pas quand il veut s'arrêter, je suis
bien embêté.
Alors j'aimerais savoir si vous ne connaîtriez pas un moyen de savoir
ce qui le fait consomer.
J'ai bien sûr lancé JVisualVM, qui m'a confirmé cette augmentation du
heap consomé, mais je n'arrive pas à voir ce qui est consomé.
Tant que j'y suis, dans mon application, j'utilise des resources JDBC
et autres JMS, Neo4J, ... Est-ce que vous sauriez si on peut savoir si
des instances des pools de connexion associés sont conservés ?
Merci
--
Nicolas Delsaux
********************************************************************************
IMPORTANT.Les informations contenues dans ce message electronique y
compris les fichiers attaches sont strictement confidentielles
et peuvent etre protegees par la loi.
Ce message electronique est destine exclusivement au(x) destinataire(s)
mentionne(s) ci-dessus.
Si vous avez recu ce message par erreur ou s il ne vous est pas destine,
veuillez immediatement le signaler a l expediteur et effacer ce message
et tous les fichiers eventuellement attaches.
Toute lecture, exploitation ou transmission des informations contenues
dans ce message est interdite.
Tout message electronique est susceptible d alteration.
A ce titre, le Groupe France Telecom decline toute responsabilite
notamment s il a ete altere, deforme ou falsifie.
De meme, il appartient au destinataire de s assurer de l absence de tout virus.
IMPORTANT.This e-mail message and any attachments are strictly
confidential and may be protected by law. This message is
intended only for the named recipient(s) above.
If you have received this message in error, or are not the named
recipient(s), please immediately notify the sender and delete this e-mail
message.
Any unauthorized view, usage or disclosure ofthis message is prohibited.
Since e-mail messages may not be reliable, France Telecom Group shall not
be liable for any message if modified, changed or falsified.
Additionally the recipient should ensure they are actually virus free.
********************************************************************************
marc godin
2011-08-25 10:24:49 UTC
Permalink
jmap histo:live (moyen precis mais utile) pour avoir un histogramme de ce
que tu as en ram
ou dump puis mat
cdlt
Marco
Post by Sebastien Cesbron
Salut
Si c'est du permgen alors c'est des classes temporaires (styles proxy pour
spring ou hibernate) et c'est lié à un mauvais nettoyage au undeploy. Il n'y
a pas forcément grand chose à faire
Si c'est la heap par contre, il faut la dumper avec visualvm et l'analyser
avec eclipse memory analyzer qui te donnera les infos sur ce qui te prend de
la mem
Seb
Salut,
Post by p***@orange-ftgroup.com
J'ai des problèmes similaires avec mvn:jetty.
Au bout d'un moment ça pète avec un truc "out of permgen space".
J'ai pas encore pris le temps de tracer pourquoi ça me bouffe du permgen
car c'est pas critique pour moi.
Ce que je peux te conseiller c'est d'utiliser un profiler/memory debugguer
genre Yourkit qui "devrait" te permettre de tracer ce qui est en mémoire
assez finement.
My 2 cents,
Patrice
-----Message d'origine-----
Envoyé : jeudi 25 août 2011 12:02
À : * liste Java
Objet : MemoryLeak au déploiement d'un EAR dans Glassfish
Salut
j'ai une application web qui, quand je la déploie régulièrement dans
Glassfish pour le développement, "semble" provoquer des memoryleaks.
C'est à dire qu'à chaque fois que je la redéploie, Glassfish mange 200
Mo.
Evidement, au bout d'un moment, il a mangé toute sa RAM et doit
s'arrêter. Et comme il ne me dit pas quand il veut s'arrêter, je suis
bien embêté.
Alors j'aimerais savoir si vous ne connaîtriez pas un moyen de savoir
ce qui le fait consomer.
J'ai bien sûr lancé JVisualVM, qui m'a confirmé cette augmentation du
heap consomé, mais je n'arrive pas à voir ce qui est consomé.
Tant que j'y suis, dans mon application, j'utilise des resources JDBC
et autres JMS, Neo4J, ... Est-ce que vous sauriez si on peut savoir si
des instances des pools de connexion associés sont conservés ?
Merci
--
Nicolas Delsaux
********************************************************************************
IMPORTANT.Les informations contenues dans ce message electronique y
compris les fichiers attaches sont strictement confidentielles
et peuvent etre protegees par la loi.
Ce message electronique est destine exclusivement au(x) destinataire(s)
mentionne(s) ci-dessus.
Si vous avez recu ce message par erreur ou s il ne vous est pas destine,
veuillez immediatement le signaler a l expediteur et effacer ce message
et tous les fichiers eventuellement attaches.
Toute lecture, exploitation ou transmission des informations contenues
dans ce message est interdite.
Tout message electronique est susceptible d alteration.
A ce titre, le Groupe France Telecom decline toute responsabilite
notamment s il a ete altere, deforme ou falsifie.
De meme, il appartient au destinataire de s assurer de l absence de tout virus.
IMPORTANT.This e-mail message and any attachments are strictly
confidential and may be protected by law. This message is
intended only for the named recipient(s) above.
If you have received this message in error, or are not the named
recipient(s), please immediately notify the sender and delete this e-mail
message.
Any unauthorized view, usage or disclosure ofthis message is prohibited.
Since e-mail messages may not be reliable, France Telecom Group shall not
be liable for any message if modified, changed or falsified.
Additionally the recipient should ensure they are actually virus free.
********************************************************************************
Continuer la lecture sur narkive:
Loading...