I've got a set of routes that make a bunch of web service calls in quick
succession, convert the XML to JSON and then save the results off to
MongoDB. This occurs on a scheduled basis (using the scheduler component,
configured to run every few hours typically).

Functionally, it works great. But I've started looking into the memory
usage and have a few concerns. Primarily, I've been able to cause linear
heap growth by increasing my total data set to be processed. My
expectations were that generally adding more calls would slow the process
down and cause higher spikes, but not linear memory growth over time. When
I dug deeper in JProfiler, I found that even after all the initial activity
died down for a given run (i.e., no more in-flight Exchanges), the majority
of my memory consumption was Strings being held in the 'in' property of
DefaultExchange objects. This seemed strange since I expected those all (or
most) Exchanges to complete and be GC'd by that point (it holds steady for
long periods of inactivity).

Is there an important cleanup step that I might be missing in my routes?
I'd include them but they're pretty complex and might muddy the waters here.

Thanks,
Jeff

Reply via email to