Ответ
Профилировщик (Profiler) — это инструмент для динамического анализа работы Java-приложения, который собирает данные о потреблении ресурсов (CPU, память, потоки, I/O) во время выполнения.
Основные цели использования:
- Анализ производительности (CPU Profiling): Определение "горячих" методов, которые потребляют больше всего процессорного времени.
- Анализ использования памяти (Memory Profiling): Поиск утечек памяти, анализ объектов в куче (Heap), сбор статистики по аллокациям.
- Анализ потоков (Thread Profiling): Обнаружение взаимных блокировок (deadlocks), активных и ожидающих потоков.
Популярные профилировщики для Java:
- JProfiler, YourKit: Коммерческие инструменты с богатым GUI для глубокого анализа.
- VisualVM: Бесплатный инструмент, входящий в JDK (также доступен отдельно).
- Async Profiler: Низкоуровневый профилировщик с минимальными накладными расходами, хорошо подходит для продакшена.
- Встроенные средства JVM: JMX, JFR (Java Flight Recorder) + JMC (Java Mission Control).
Пример типичной проблемы, которую помогает найти профилировщик:
Профилировщик может показать, что метод String.concat в цикле вызывается миллионы раз, создавая огромное количество промежуточных объектов String. Решение — замена на StringBuilder.