Escape analysis и скаляризация
Escape analysis и scalar replacement появились в Java еще в версии 1.6, а их включение действительно может заметно снизить нагрузку на GC. Но вот надежного понимания, в каких конкретных участках кода на скаляризацию можно положиться, а в каких — нет, у нас за эти годы так и не сложилось. В сети можно найти массу историй успеха в духе «а вот в таком коде совсем-совсем нет аллокаций!», приведенный код часто оказывается очень хрупким: иногда достаточно поправить одну-две строчки, как все волшебство исчезает.
Данный доклад — попытка привнести больше понимания в этот вопрос. Руслан кратко опишет сам алгоритм escape-анализа и его врожденные ограничения. На примерах будут рассмотрены ограничения реализации его в JIT-компиляторе.
Разрабатываю программы для торговли на финансовых рынках, танцую, путешествую.
Презентация
Видео
Все доклады