Все Java-профайлеры в той или иной степени лукавят, потому как средств JDK заведомо не хватает, чтобы точно узнать, на что тратятся такты процессора. Даже «честные» профайлеры, основанные на внутренних интерфейсах HotSpot JVM, не расскажут всей правды. Остаётся прибегнуть к аппаратным счётчикам и функциям ядра, но вот беда: они ничего не знают о Java-коде. Мы обсудим различные подходы к профилированию: JVM TI, AsyncGetCallTrace, perf_events и Flame Graphs; разберём принципы их работы, достоинства и ограничения, а также найдём способ взять лучшее от каждого из них. В завершение рассмотрим, как Одноклассники профилируют в продакшене весь стек от Java-кода до ядра Linux.
Скачать презентацию