July 19, 2018

Как вычисляется hashCode

В HotSpot можно выбрать один из 6 режимов генерации hashCode

0 – Park-Miller RNG (был по умолчанию раньше (узнать когда))

1 – f(адрес, глобальное_состояние)

2 – константа 1

3 – последовательный счетчик

4 – адрес объекта

5 – Thread-local Xorshift (по умолчанию)

Раньше по умолчанию в HotSpot hashCode генерировался на основе генератора случайных чисел. При этом вызывался метод System.identityHashCode(). Вычисление происходило только при первом вызове метода hashCode, для последующих вызовов он брался из заголовка объекта.