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

Существует идентификатор объекта, отображенный около объектного значения в Eclipse При отладке.

Например: 28332 идентификатор объекта сессии. Другой пример: waiting for: (id=101) отображен в панели Debug. Эти идентификаторы не являются ни хэш-кодом, ни a System.identityHashCode.

Делает кто-либо знает - как добраться this идентификатор объекта?

33
задан Nathan 10 July 2018 в 22:27
поделиться

1 ответ

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

Правка : я бы установил точку останова следующим образом (обратите внимание, я не очень хорошо разбираюсь в Eclipse):

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

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

27
ответ дан 27 November 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: