Steve Lawrence created DAFFODIL-1879:
----------------------------------------

             Summary: Compilation related data structures cannot be garbage 
collected due to RuntimeData strong references
                 Key: DAFFODIL-1879
                 URL: https://issues.apache.org/jira/browse/DAFFODIL-1879
             Project: Daffodil
          Issue Type: Bug
            Reporter: Steve Lawrence
             Fix For: 2.1.0


All the *RuntimeData and DPathCompileInfo constructors accept pass-by-name 
parameters. Some of the arguments passed into these constructors reference 
objects that are only needed for schema compilation (e.g. dsom, grammar, etc.). 
Because they are pass by name, these objects are strong reference and thus 
cannot be garbage collected, leading to the entire compilation state being 
store in memory.

Fortunately, those parameters are marked as transient and so when serialized 
and deserialized they are effectively garbage collected. But if one does not 
save/reload a schema, lots of wasted memory used during schema compilation will 
stick around. Pass-by-name parameters cannot be vars, so the simple thing of 
making them vars and then setting to null does not work. These objects should 
be restructured to allow them to be garbage collected once compiled.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to