-
Bug
-
Resolution: Done
-
Major
-
3.0.4.GA
-
None
ByteBufferSlicePool.QueueThread.run() is missing a for(; loop. As a result, it cleans up one reference and then exits. If slices are explicitly freed via Slice.free(), there is no leak. But if the slice is garbage collected, Slice.dispatch() is called, a Ref is added to REFERENCE_QUEUE. This Ref has a strong reference to the Slice, which has a strong reference to the parent region, which is huge. If the QueueThread isn't running, the Slice is not recycled and is instead leaked.