☕ Задача для опытных Java-разработчиков: «Призрачная утечка памяти в продакшене» 🧠 Уровень: Senior Java / JVM Internals 🎯 Цель: Найти источник утечки памяти в долгоживущем Java-сервисе и объяснить поведение GC 📍 Ситуация: У вас есть Java-сервис (Spring Boot), который стабильно работает 5–6 часов, а потом начинает резко тормозить. Мониторинг показывает рост heap usage почти до лимита, несмотря на регулярные GC-сборки. Интересные факты: - GC срабатывает часто, но не очищает больше 20–30% хипа - Не происходит OutOfMemoryError, но приложение начинает "фризить" - Подозрения падают на кэш, но размер кэша — ограничен (Caffeine, maxSize=5000) - Все коллекции под контролем, слабые ссылки используются - Нет утечек в логах, нет Thread`-leak по `jstack 🧩 Задача: 1. Где искать утечку, если GC работает, но память не освобождается? 2. Почему слабые ссылки не помогают? 3. Как поведение ClassLoader может влиять на утечку? 4. Какой инструмент использовать для анализа "живых" объектов в памяти?
☕ Задача для опытных Java-разработчиков: «Призрачная утечка памяти в продакшене
4 июня 20254 июн 2025
1
2 мин