7
votes

Java HotSpot 1.6 VM, collection de déchets - Permgen effrayant

Mon application montre la taille de la "vieille génération" de la «vieille génération», et lorsque cela atteint la limite maximale pour «Old Gen», la taille de la permène augmente soudainement. Voici mes grésings de génération:

    PS Perm Gen
Type    Non-heap memory
Usage   init = 16777216(16384K) used = 254453736(248489K) committed = 504954880(493120K) max = 629145600(614400K)
Peak Usage  init = 16777216(16384K) used = 254453736(248489K) committed = 504954880(493120K) max = 629145600(614400K)
Collection Usage    init = 16777216(16384K) used = 252421536(246505K) committed = 504954880(493120K) max = 629145600(614400K)


2 commentaires

Autant que je sache, la maxpermsize ne peut pas être plus de 256 Mo ...


@Bozhidar: pas vrai, la taille de Permgen peut être beaucoup plus grande que celle


3 Réponses :


0
votes

Utilisez JMAP pour effectuer une mémoire de mémoire avant de redémarrer votre serveur et d'analyser avec Eclipse Mat < / p>


0 commentaires

2
votes

Je suivirais les conseils de Leonm pour analyser ce qui prend tellement de mémoire. Je parie que vous avez une sorte de fuite de mémoire méchante.

Vous dites que vous ne faites pas de classement de fantaisie, mais Hibernate génère des classes à la volée pour vous. Utilisez-vous des fonctionnalités AOP (par exemple du module de ressort AOP?).

Fondamentalement, si vous êtes à court d'espace Permgen, il semble que votre application continue à produire de nouvelles classes (car il s'agit de classes stockées à Permgen).


1 commentaires

J'essaierais Jmap ce soir et mettre à jour .. Nous n'utilisons pas le Spring AOP, mais utilisez des haricots de printemps (qui sont supposés être des singletons, je ne sais pas si ce sont un facteur contributif) .. Aussi, pourriez-vous ou quelqu'un jeter la lumière sur ce qui se passe quand "vieux général" est des ordures recueillies? Le JVM a-t-il mis des collections de «vieux général» à Permgen? My Permgen Spike ne vient que lorsque la collecte se produit de «Old Gen», diminuez également de la taille de la taille de Oldgen.



0
votes

Permgen est divulguée si vous continuez à déployer / interployer des applications sur Appserver.

Vérifiez ce lien pour une plus grande explication sur la manière dont il ne s'agit pas de la faute de l'Appserver.

http://blogs.oracle.com/fkieviet/enterry/classloader_leaks_the_dreaded_java


2 commentaires

Je ne me déploie jamais sur une tomcat en cours d'exécution, désolé de ne pas avoir mentionné que plus tôt


Permgen a la plupart des définitions de classe. Je me demande quel genre d'application vous avez?