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.

Reply via email to