TGViewer
Чашечка Java Чашечка Java @a_cup_of_java · 8.34K subscribers
Post #8696 530
Почему копирование HashMap стало быстрее в JDK 27

При вызове putAll() карта раньше читала элементы источника через интерфейс Map: создавала итератор, получала ключи и значения, снова вычисляла хеши. Несколько реализаций Map в одном месте вызова усложняли оптимизацию для JIT.

В JDK 27 добавили отдельный путь для источника, который является именно HashMap, и для неизменяемой обёртки над такой картой. Реализация обходит внутреннюю таблицу напрямую и использует хеш, уже сохранённый в узле. Это касается и конструктора HashMap(Map).

В разборе оптимизаций JDK 27 приведены JMH-замеры на AWS Graviton: в выбранных сценариях время операции сократилось на 61–86%. Это результаты конкретных микробенчмарков.

Для других типов исходной Map остаётся общий путь. При обновлении сервиса полезно проверить копирование карт на своих данных: размеры коллекций и типы источников влияют на результат.

#java #производительность
More from @a_cup_of_java
  1. Oct 17, 2026Что меняется в TLS 1.3 с JDK 27 JDK 27 поддерживает гибридный обмен ключами: группа X25519…
  2. Oct 17, 2026Lathe: конфигурация редактора из реальной Maven-сборки Maven собирает проект, а редактор п…
  3. Oct 16, 2026Как собрать Swing-приложение без JVM у пользователя Quarkus Desktop помогает собрать прило…
  4. Oct 16, 2026Java в браузере: редактировать, компилировать, запускать В учебном примере удобно поменять…
  5. Oct 14, 2026Spring Boot и PostgreSQL: дедлок может быть в транзакциях Приложение получило ошибку 40P01…
  6. Oct 14, 2026Развёрнутое пояснение: 1. Создаётся session, реализующий AutoCloseable: при закрытии он вы…
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 →