Перейти к содержимому
Java

Почему после redeploy приложение может удерживать старый ClassLoader?

Достаточно ссылки из живого объекта родительского загрузчика на объект или класс старого web-приложения.

Senior26 августа 2026 г.
JVM

ClassLoader выгружается только вместе со всеми определёнными им классами. Если живой поток, ThreadLocal, executor, JDBC driver registry или кэш в родительском загрузчике хранит объект старого приложения, цепочка ссылок не разрывается и metaspace продолжает расти после redeploy.

Искать проблему стоит от старого ClassLoader в heap dump к GC roots. Исправление обычно симметрично lifecycle: остановить фоновые потоки, очистить ThreadLocal, закрыть ресурсы и снять регистрации при остановке приложения.

Подробнее: ClassLoader на практике: Tomcat, Spring Boot, плагины и утечки памяти.

← Все вопросы и ответы