Как dead code elimination работает в JIT и можно ли на неё полагаться?

Senior
179 просмотров
AFK Offer AI

JIT убирает код который никогда не выполняется или результат которого не используется. Например, if (false) {...} уберётся полностью. Это один из бонусов method inlining — после инлайна JIT видит весь контекст и убирает недостижимые ветки. Нельзя полагаться для измерений: в микробенчмарках JIT может убрать весь тестируемый код если результат не используется. Поэтому JMH (Java Microbenchmark Harness) использует Blackhole чтобы потреблять результат.

Следующий вопрос

Что такое Spring Boot Admin и что он показывает?