2009-03-11 4 views
3

J'ai une application Enterprise avec EJB3 et JSF sur le serveur Glassfish. Après avoir exécuté cette application pendant plus de 2 semaines, j'ai réalisé que j'avais un problème avec le chargement de classe. Je ne pense pas que ce soit un problème avec permgen. Les classes chargées chaque fois que j'ouvre une page, mais ils n'ont jamais effacé de la mémoire. Voici l'instantané de la mémoire ou mon serveur:Problème de chargement de classe dans l'application Java Enterprise

Snapshot

Donc, j'ai juste besoin quelques conseils de la façon dont je peux déboguer ce problème.

Répondre

2

Il ya un nice explanation de pourquoi ce genre de choses se produisent, et un compte plus récent de problème similaire here. L'utilisation de jhat peut aider à déterminer quelles classes occupent la mémoire, puis rechercher une référence statique qui peut les contenir ou le classloader, empêchant ainsi le déchargement approprié.

+0

Ne ressemble pas à une rafale d'un rechargement d'application. –

0

Il ne semble pas que vous rechargiez votre application, ce qui serait la réponse évidente. Vraiment, vous voulez savoir ce que sont ces classes. Reflection et XSLT [C] sont des cibles évidentes pour créer des classes, mais cela semble incroyablement régulier. On peut supposer qu'il y a quelque part un cache basé sur le temps qui fuit d'une façon ou d'une autre.

0

Cela peut poser un problème avec votre infrastructure Web JSF (MyFaces, ICEFaces, etc.), si vous en utilisez un. Surtout compte tenu du fait que vous ne redéployez pas l'application, mais cela se produit lorsque les pages sont ouvertes/fermées. Je suggère que vous vérifiez le traqueur de problème approprié, avant de faire plus de débogage et profilage.

Vous pouvez également essayer de déployer l'application sur votre machine locale, avec un espace de segment de mémoire intentionnellement faible, et tenter de reproduire la fuite de mémoire de manière cohérente en naviguant uniquement dans les pages Web de l'application. Heureusement, vous serez en mesure de réaliser exactement quel type d'action entraîne le chargement de nouvelles classes.

Questions connexes