В спецификации Java сказано, что сборщик мусора может собирать мусор для вашего объекта
ТОЛЬКО если он недоступен из любого потока.
Достижимый означает, что существует ссылка или цепочка ссылок, которая ведет от А к В,
и может пройти через C, D, ... Z для всех, кого это волнует.
JVM, не собирающая вещи, не была для меня проблемой с 2000 года, но ваш пробег может отличаться.
Совет: Сериализация Java кэширует объекты, чтобы сделать передачу объектов эффективной. Если у вас много больших, временных объектов и вся ваша память перегружена, перезагрузите ваш сериализатор, чтобы очистить его кэш.