Подтвердить что ты не робот

Идентификатор объекта Java в jvm

Идентификатор объекта отображается рядом с значением объекта в eclipse. При отладке.

Например: 28332 - это идентификатор объекта сеанса. Этот id не является ни хэш-кодом, ни System.identityHashCode.

Кто-нибудь знает - как получить этот идентификатор объекта?

4b9b3361

Ответ 1

Я предполагаю, что они имеют внутри IdentityHashMap<Object, Integer>, присваивая уникальное (но бессмысленное другое) целое число для каждого объекта. Это должно быть внутренним для отладчика eclipse (а не специального идентификатора, который есть у объектов), спрашиваете, как это сделать?

Изменить: я бы установил такую ​​точку останова (обратите внимание, что я не хорошо разбираюсь в eclipse):

  • У меня была бы начальная точка останова (например, та, что вы использовали для снятия скриншота), и напечатайте System.identityHashCode(object) интересующего меня объекта.
  • Затем я создам точку останова, используя условие System.identityHashCode(object) == <whatever number you saw at the previous step>. Для этого было бы очень редко останавливаться на неправильном объекте.

Или, если интересующий вас объект имеет соответствующее представление toString(), которое вы могли бы использовать, вы также можете попробовать это вместо System.identityHashCode(object). Во всех случаях вам не нужно полагаться на идентификатор внутреннего объекта eclipse, но фиксировать такой "id" (или почти), который вы можете извлечь из самого объекта.