
Одно лишнее if — и объект уезжает в кучу: как C2 решает, каким аллокациям не быть
Пара new в горячем методе может вообще не попасть в кучу — а после безобидного if внезапно вернуть аллокации обратно. Разбираемся, как C2 принимает такие решения, где ломается скалярная замена и как проверить всё это через JMH и диагностические флаги JVM. Разобраться в JVM