Эффективная Java говорит:
Третий общий источник утечек памяти это слушатели и другие обратные вызовы. Если вы реализуете API, в котором клиенты регистрировать обратные вызовы, но не отмените их в явном виде, они будут накапливаться, если вы не действие. Лучший способ обеспечить обратные вызовы - сбор мусора оперативно хранить только слабые ссылки на них, например, сохраняя их только как ключи в WeakHashMap.
Я новичок в Java. Может ли кто-нибудь научить меня создавать слабые ссылки в обратных вызовах и рассказывать мне, как они решают проблемы с утечкой памяти? Спасибо.