Hiyah, I've heard good things about your progress on the CBP memory
footprints, the memory usage of the workflows for us is a current concern
and I'm interested in any progress that you've managed to make so far ?

I hope you don't mind, but because the memory was looking to be an issue to
me, I did a brief investigation into what I might be able to do to improve
things ;) (from what I've heard my improvements weren't a touch on what
you've been looking at!)

We kept running out of memory during Deploy+Un-deploy cycles, a lot of
memory was being used up by both the ObjectInputStream and by Xerces/DOM.
One simple thing I noticed for us was the cost of Literal Assigns during
re-hydration, the stringToDom seemed to allocate a lot of memory when I
shifted this to the first time the assign was resolved the re-hydration time
was substantially faster, but obviously any errors in the XML weren't caught
at that point.

The other thing we noted was that memory used by the initial deploy of a
workflow didn't seem to be freed up when an un-deploy occurred (the memory
used by the hydration process was given up, but not the memory used by the
compilation phase.)  A v. brief profile suggested that the Process object
may be hanging around, I think one instance was in the 'stack' thats used
within the compiler, but I suspect others.    Also for us the _services map
in ODEServer seemed to contain objects referenced by a MultiValueKey which
took a 'namespaced' PortType when it was put into the map, but when the
destroy was trying to remove the service it wasn't using the namespace so it
was never being removed from the map.  I haven't yet worked out if thats
just some issue with our WSDL but it seems strange that the ODEServer would
behave differently on a deploy and on an un-deploy...

I hope these comments help in someway, but I appreciate they're not much use
without a patch or repeatable test-case, so sorry, just not enough time to
do everything I oughta do :(
- cj.

Reply via email to