Setting 'streaming="true" parallelProcessing="true"' consumes large amounts of heap space for big original messages. E.g. 1024m of heap is not enough to process an 80Mb with 500'000 lines, splitting it line by line.
The problem seems to be the ArrayList in MulticastProcessor line 224. It contains a Future<Exchange> object for every token delivered by the java.util.Scanner. The list is only cleared (going out of scope) after all Future objects have been completed.