Hi,
Servicemix 3.3 was released almost one year ago, after that, several memory issues of cxf bc get fixed. Could you test with the latest released fuse 3.4.0.4 [1](which is based on apache servicemix 3.3 but released more recently)?

[1]http://repo.open.iona.com/maven2/org/apache/servicemix/apache-servicemix/3.4.0.4-fuse/
Freeman
On 2009-8-20, at 下午5:25, Sebastian Gomez wrote:

Hi everyone.
I'm using YourKit to monitor the memory usage in my application running on
ServiceMix 3.3 because there seems to be some kind of memory leak that
finally ends up with a OutOfMemoryError due to the heap space. After
removing a few SUs from my SA, I've detected the one that grabs hold of the memory is cxf-bc. Playing around with the thread pools I've seen that if I reduce the number of threads of this component, the memory does not seem to run out. This makes me think that the threads are using up a lot of memory even though their job has already finished. I've run into the same problem using both ODE and EIP separately to control the flows, so I'm leaving it to ServiceMix to mark the exchanges as DONE, so I think it can't be the typical
not-marking-the-exchanges-as-done error.

To support my idea:
I'm consuming two types of messages from a third party WS. The first type is
a small message (approximately 2KB), while the second is quite large
(approx. 2MB). Both messages contain all their information in the payload, i.e. there are no attachments. If I download lots of the large messages, the heap is quickly used up. But if I download only some large ones (not enough to use up the whole heap, but most of it), and then I download lots of the small ones, the heap is freed. It looks like the threads in the pool used to download large files are being used to download the small ones so they free the memory they where using up for the large files. I'm not sure if this
makes sense, but it's what I've noticed using YourKit.

I'd appreciate someone telling me if my assumption could be possible. Has someone tried downloading large payloads using cxf-bc? I see in YourKit that lots of Xerces DOM objects are being created, I'm worried that they aren't being freed once the thread has finished its job. Would it be possible to add an interceptor before cxf-bc consumes the message to convert it into a small payload with an attachment? This should prevent the OutOfMemoryError,
shouldn't it?

Hope someone has read so far and is still willing to help. Thanks in
advance.

Sebastian Gomez.


--
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com

Reply via email to