GC освобождает память объектов, которые больше недостижимы. Но если приложение сохраняет ссылки на ненужные объекты, они продолжают занимать память.
Типичные причины:
• Растущая статическая коллекция.
• Кэш без удаления устаревших записей.
• Неочищенный
ThreadLocal в долгоживущем потоке.• Слушатель, который забыли отписать.
«Объект больше не нужен» ≠ «объект недостижим». Поэтому приложение может расходовать всё больше памяти в куче, даже когда сборщик мусора работает исправно.
👉 Java Portal