You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Kimball C Sampson (JIRA)" <ji...@apache.org> on 2015/10/07 20:47:26 UTC

[jira] [Created] (GROOVY-7621) Memory Leak (metaClassRegistry) unable to remove metaClass based on instances

Kimball C Sampson created GROOVY-7621:
-----------------------------------------

             Summary: Memory Leak (metaClassRegistry) unable to remove metaClass based on instances
                 Key: GROOVY-7621
                 URL: https://issues.apache.org/jira/browse/GROOVY-7621
             Project: Groovy
          Issue Type: Bug
          Components: groovy-runtime
    Affects Versions: 2.3.7
         Environment: Running from Eclipse, JBoss with jdk 1.6
            Reporter: Kimball C Sampson


I'm using the GroovyScriptEngine in a web server environment where the scripts are provided properties on-the-fly from database objects.  This is done by implementing script.metaClass.propertyMissing.  When I return a value, I set the metaClass to give the returned value even more sub-properties.  After processing 100k records or so, I run out of memory.  I tried to write code to remove entries from the metaClassRepository, but there's no way to do it for an object instanced based metaClass.  Also, I've outputed the GroovySystem.metaClassRepository.iterator().size() and it kept growing.  The values are out of scope so they should get garbage collected, but the metaClasses aren't getting cleaned up.

The workaround to this problem was to implement a groovy Proxy, though, I liked the metaClass solution better.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)