QueueEntries can hold Subscriptions which rejected them in memory after they are closed, due to the implementation of the isRejectedBy() method. This is further compounded by the Subscriptions having a reference to the channel/session they belong to, which in the case of a 0-10 ServerSession can be an extremely heavy weight object in the wrong conditions. The isRejectedBy() implementation should be updated to function without requiring a reference to the Subscription itself, thus preventing the retention leak.
I have had a simple patch for this for a while, its just waiting for
QPID-3386 being done (which it almost is, will get it committed shortly).