Description
BinaryData holds on to BinaryDecoders as thread local variables (so it doesn't have to make new ones for each compare?). When a compare is completed, the BinaryDecoder still keeps a reference to the ByteArrayByteSource, which stops its underlying byte array from being garbage collected.
This is causing an OutOfMemoryError in reducers when shuffling with MR2.