Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-7733

Can't unloaded Groovy classes - PermGen Erros

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Duplicate
    • 1.0
    • None
    • groovy-jdk
    • None
    • linux,windows

    Description

      I have a legacy system that is extensively using Groovy version 1.0 and currently I can not update Groovy to an updated version. From time to time I'm getting a PermGen error due to the fact that all the Groovy classes/scripts are kept in memory even if no one is using them any more.
      I'm trying to figure out what is the correct way to unload those classes after I've finished using them.

      I'm using the following code to create the Script object:

      GroovyShell shell=new GroovyShell();
      Script script = shell.parse("ANY_TEXT");
      .....

      And I'm trying the following code to unload the generated class:

      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;

      Unfortunately, this doesn't seems to work because I keep on getting a PermGen error. How can I unloaded groovy classes and keep the PermGen size reasonable?

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              itayhudedi Itay Hudedi
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: