Все абстракции рано или поздно протекают, какими бы красивыми и стройными они ни были. Протекают и те, что скрывают за громкой фразой «Write Once, Run Anywhere» особенности исполнения многопоточного кода на реальном железе.
И горе после такой протечки тому, кто не понимает, как всё устроено под капотом. Частенько для того, чтобы разобраться в каком-то поверхностном явлении, приходится разрывать все любезно накрученные слои абстракции. Понимать Модель Памяти Java — важно, но этого мало. Нужно ещё и знать, как эта модель устроена, и понимать, почему именно так. А для этого нужно идти глубже!
Доклад будет состоять из краткого теоретического описания происходящего, а затем решительно перейдёт к расчленению OpenJDK в режиме живого демо. Мы рассмотрим, как реализованы volatile переменные и synchronized блоки, узнаем, что же такое мембар и почему все так любят x86, и напоследок жестоко надругаемся над HotSpot!
- Глеб СмирновСпециалист по разработке высокопроизводительных отказоустойчивых приложений, в том числе платформ для высокочастотной торговли. В свободное время любит поковыряться в исходниках OpenJDK и потворить с ними всяческое непотребство. Автор нескольких популярных статей о многопоточности. Некоторое время проработал в петербургских подразделениях Яндекса и центра разработки Deutsche Bank. В данный момент странствует по миру и работает в Plumbr, где разрабатывает решения для мониторинга производительности и надёжности приложений @gvsmirnov