Алексей Шипилёв — Прагматика Java Memory Model

Спецификация Java Memory Model в JLS пытается быть предельно сжатой и полной. Поскольку JMM пытается объять очень большой пласт явлений, её формализм весьма громоздок, что обернулось потерей понимабельности модели простыми смертными.

Понять хотя бы наполовину, что написано в спецификации Java Memory Model (далее — JMM), получается раза с третьего. Понять, почему записано именно так, по спецификации вообще невозможно, и приходится обращаться к дополнительным источникам, которые пытаются как-то формализм JMM переосмыслить, дополнить, и привести примеры.

В этом докладе мы:

  • попытаемся проследить за логикой построения модели;
  • поговорим о том, каких прагматических результатов модель пыталась добиться;
  • посмотрим, с какими ограничениями злого внешнего мира при этом пришлось столкнуться;
  • увидим, как JMM пытается балансировать между требованиями девелоперов и требованиями
  • разработчиков рантаймов и железа.

Плюс к этому, посмотрим, куда копает и будет копать апдейт JMM в JDK 9.

  1. Алексей Шипилёв
    Работает над производительностью Java вот уже почти 10 лет. Успел позаниматься производительностью Apache Harmony в Intel, затем перешёл в Sun Microsystems, а потом и в Oracle, где работал над производительностью Sun/Oracle JDK, в том числе производительностью JVM, библиотек классов, фреймворков и приложений. На данный момент трудится в Red Hat. Являлся техническим представителем Oracle в Standard Performance Evaluation Corporation (SPEC), занятой разработкой и поддержкой промышленных бенчмарков. В данный момент серьёзную часть времени тратит на Java Microbenchmark Harness, инструмент для измерения производительности Java-кода.