TGViewer
Java: fill the gaps Java: fill the gaps @java_fillthegaps · 12.3K subscribers
Post #34 2.58K
Блокировки в HotSpot JVM

Java Virtual Machine(JVM) - это посредник между скомпилированной кодом и операционной системой (ОС). Благодаря такой схеме можно легко запускать java приложения на разных платформах. Реализаций JVM много, но самой распространённой является бесплатная HotSpot от OpenJDK.

JVM не просто переводит java команды в команды ОС. Виртуальная машина реализуется так, чтобы выполнять код эффективнее и быстрее.
Рассмотрим, например, как HotSpot оптимизирует действие «взять блокировку».
У JVM есть 3 способа реализации:
▪️Fat или inflated : на основе мониторов объектов (мьютексов). Подходит для случаев, когда есть много претендентов на захват блокировки.
▪️Thin или deflated : с использованием CAS команд. Это быстрее, чем использовать мьютексы. Но из-за необходимости эксклюзивного доступа в условиях большой конкуренции между потоками этот подход неэффективен.
▪️Biased: оптимизированный тип блокировки для случаев, когда с объектом в основном работает один поток. При первом взаимодействии объект ассоциируется с потоком и дальнейшие действия происходят без лишних синхронизаций. Если другой поток захочет захватить блокировку, то начнётся глобальная перестройка или bulk revocation. Это очень неэффективно и для активно конкурирующих сценариев, например, producer-consumer, такой тип блокировки не подойдёт.

Biased блокировка отключена на старте приложения, потому что в этот момент происходит много междупоточных взаимодействий. Но спустя некоторое время она включается и является блокировкой по умолчанию.
Её можно отключить с помощью опции:
-XX:-UseBiasedLocking
Время включения после старта регулируется флажком
-XX:BiasedLockingStartupDelay=500
По умолчанию это значение равно четырём секундам.

Для большинства приложений вам не потребуется использовать эти опции. Но для специфичных случаев флажки JVM могут поднять производительность в разы.

#теория
  • 👍 2
More from @java_fillthegaps
  1. Apr 30, 2026Get Your Hands Dirty on Clean Architecture: отзыв на книгу Когда я подняла тему чистой арх…
  2. Apr 27, 2026​Clean Architecture: отзыв на книгу Наконец-то дочитала книгу Clean Architecture Роберта М…
  3. Mar 4, 2026Как переиспользовать контекст в интеграционных тестах Сегодня расскажу базовый минимум для…
  4. Mar 4, 2026Post #660
  5. Mar 4, 2026Тестовый контекст поднимается 2 минуты. У нас 4 класса с интеграционными тестами, их конфи…
  6. Feb 25, 2026Чистая архитектура. Главы 3-5 Продолжаем спидран по Clean Architecture Роберта Мартина. ⭐️…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →