Starting to fall in love again with WeakReferences and concurrency. There is something magical about creating a heavy object for processing, putting it into a WeakReference, sharing it around to multiple threads and as soon as all of them finish, the weak reference itself is cleared from memory, regardless if they complete or throw. So easy.