J'ai un système hérité qui utilise intensivement Groovy
version 1.0 et actuellement je ne peux pas mettre à jour Groovy
vers une version mise à jour. De temps en temps j'obtiens une erreur PermGen
due au fait que toutes les classes/scripts Groovy
sont gardés en mémoire même si personne ne les utilise plus.Impossible de décharger les classes Groovy - PermGen Erros
J'essaie de comprendre quelle est la bonne façon de décharger ces classes après avoir fini de les utiliser.
J'utilise le code suivant pour créer l'objet Script:
GroovyShell shell=new GroovyShell();
Script script = shell.parse("ANY_TEXT");
.....
Et j'essaie le code suivant pour décharger la classe générée:
MetaClassRegistry metaClassRegistry = MetaClassRegistry.getIntance(0);
metaClassRegistry.removeMetaClass(script.getMetaClass().getClass());
metaClassRegistry.removeMetaClass(script.getClass());
metaClassRegistry.removeMetaClass(script.getBinding().getClass());
script.setBinding(null);
script.setMetaClass(null);
script = null;
Malheureusement, ce n » Cela semble fonctionner parce que je continue à obtenir une erreur PermGen
. Comment puis-je décharger Groovy
classes et garder la taille PermGen
raisonnable?
Do vous avez cette erreur si vous n'essayez pas de le faire? –
Avez-vous essayé de supprimer une version plus récente de groovy? Juste pour voir si cela a résolu le problème? Vous pourriez alors prendre cela pour les personnes qui décident que les choses ne peuvent pas être mises à jour, pour aider à argumenter votre cas pour la santé mentale –
Le problème se produit uniquement lorsque vous utilisez Groovy. –