I have the strong feeling, that it should be noted, that you allways have to cancel the PacketCollector manually via .cancel() if you don’'t use it anymore.
If you don’'t do so, it will remain in memory till judgement day.
In my case I created a PacketCollector every time I send a message to wait for the explicit answer. Failing to to cancel it produced every 200 Messages (200 Packet Collectors!!!) an OutOfMemoryError which was very hard to find indeed.