[
https://issues.apache.org/jira/browse/ODE-574?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ciaran Jessup updated ODE-574:
------------------------------
Attachment: memory-leak-all-in-one-2.patch
This patch has been re-generated against the latest SVN HEAD. It does the
following:
1) Adds a synchronisation block around the templates removeAll call.
2) Adds a call to purge just after an oProcess has been compiled.
3) In my previous patch I very deliberately didn't set the 'ErrorListener' to
null as my reading of the java specification in this area suggests that doing
that should cause a null-pointer, I'm unsure that it is safe to do what the
current SVN HEAD does, but I'm happy to be shown to be wrong :)
I still don't really understand why purging based on the filepath was a bad
idea, as these are file-based resources that are being deleted, however I'll
bow down to your expertise and better judgement, I'm sure you're aware that
the current version will delete cached resources for *all* versions of a given
process, wheras the original patch was a little more fine-grained <g>, but the
important thing for me is, with the above changes I no-longer leak memory on
deply-undeploy cycles, and I use less on a deploy (freeing up references allows
the GC to collect if it needs to mid deploy, otherwise you can twice as much in
memory as you need to )
> Memory leak when Un-deploying processes that contain XSL stylesheets
> --------------------------------------------------------------------
>
> Key: ODE-574
> URL: https://issues.apache.org/jira/browse/ODE-574
> Project: ODE
> Issue Type: Bug
> Components: BPEL Compilation/Parsing, BPEL Runtime
> Environment: N/A
> Reporter: Ciaran Jessup
> Attachments: cleanup-xsl-cache.patch, memory-leak-all-in-one-2.patch,
> memory-leak-all-in-one.patch
>
>
> Currently if the BPEL process contains any XSL stylesheets it will not free
> up *all* the memory that was allocated during the compilation/dehydration of
> the process. This seems to be because there is a cache of XSLTemplates
> stored in the XSLTransformHandler, and these XSLTemplates can sometimes
> contain (transitive) references back to the OProcess object instances (via
> for example the URIResolvers/XPAth Expressions). Unfortunately this cache
> lives forever (crucially even after the process has been un-deployed)
> because of this the object graph hanging from the OProcess object instance is
> never available for the GC to pick-off.
> There is also another reference issue in the ErrorListener that is associated
> with the XSLTransformHandler instance, but I don't really understand that bit
> of code just as yet, a patch for the former issue follows, I'm reviewing the
> ErrorListener issue currently.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.