I wanted to do a little probing regarding memory and servicemix. I was wondering how exchanges between services are stored/persisted. I'm asking because I've been plagued by out of memory exceptions with my heap memory. Under high load, servicemix can exhaust 1 gig of memory in 3 hours.
I finally have been integration testing servicemix services with junit (which is awesome to be able to do by the way), when I run my junit perf test through jprob, I see my memory keep steadily climbing. When I look at the results, it shows the onMessageExchange method call of my servicemix-bean component as being the place that uses the most memory. All my services temporary objects get disposed of, but it looks like the MessageExchanges are hanging around. It particulary points to InOnly and NormalizedMessage as being the biggest offenders. Is servicemix keeping all the exchanges in memory, whether finished or not? Does my analysis sound correct? Is there any tweaking I need to do out of the box to have exchanges purged? I want to make sure I'm correct on the issue and understand what's going on enough to be able to fix it. Thanks, ryan
