Как диагностировать утечку памяти в долгоживущем JVM-сервисе?
Сначала убедиться, что это утечка: смотреть heap после полной сборки на протяжении часов, потому что пила, возвращающаяся к базовой линии, утечкой не является. Затем снять heap dump и открыть в MAT — он покажет дерево доминаторов, то есть объекты с наибольшей удерживаемой памятью и того, кто на них ссылается. Обычные ответы: неограниченный кеш, ThreadLocal, не очищенный на пуловом потоке, или слушатели, которые регистрируются и никогда не отписываются.