Как измеряется пул строк в виде сегментов в Java? - PullRequest
5 голосов
/ 30 мая 2019

Просматривая эту статью о пуле строк и его изменениях за последние годы, я натолкнулся на следующее утверждение:

До Java 7u40 размер пула по умолчанию был1009 блоков, но это значение было подвержено нескольким изменениям в более поздних версиях Java.Чтобы быть точным, размер пула по умолчанию от Java 7u40 до Java 11 был 60013, и теперь он увеличился до 65536.

Итак, что такое сегменты в пуле строк?Как они сопоставимы с количеством интернированных строк?Схожа ли эта концепция с ведрами в hashmaps?

1 Ответ

3 голосов
/ 30 мая 2019

Итак, что такое сегменты в пуле строк?

Пул строк - это в основном хеш-таблица .Хеш-таблица содержит сегментов или слотов .

Как они сопоставимы с числом интернированных строк?

Этозависит от реализации (зависит от JVM) и зависит от того, сколько записей хранится в одной корзине.В идеале одно ведро содержит одну запись.

Схожа ли концепция с корзинами в хэш-картах?

Да, это та же идея.

Почему размер пула по умолчанию растет?(мой вопрос)

Чем больше сегментов выделено, тем ниже коэффициент загрузки , что положительно влияет на производительность.Я предполагаю, что первоначальное количество записей в таблице увеличивается, поэтому важно поддерживать коэффициент загрузки обновленным (по крайней мере, на одном уровне).

...