Обычно реализация по умолчанию Object.hashCode()
является некоторой функцией от выделенного адреса объекта в памяти (хотя это не предписано JLS ). Учитывая, что виртуальная машина шунтирует объекты в памяти, почему значение, возвращаемое System.identityHashCode()
, никогда не изменяется в течение жизни объекта?
Если это однократное вычисление (объект hashCode
вычисляется один раз и сохраняется в заголовке объекта или что-то в этом роде), значит ли это, что два объекта могут иметь одинаковые identityHashCode
( если они сначала будут размещены по тому же адресу в памяти)?