2010-07-20 18 views
32

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

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

Кто-нибудь знает - как получить ЭТОТ ИД объекта?

ответ

26

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

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

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

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

+2

Как правило, я отлаживаю приложение и хотел бы собирать некоторую информацию об объектах несколько раз во время выполнения процесса - остановиться в точке останова и получить информацию о том, какой путь объекта через вызовы функций ... – Gorbush

+3

+1 Я думаю это правильно, номера, по-видимому, выделяются и отслеживаются внутренним отладчиком Eclipse, которые легче читать и распознавать, чем фактические идентификаторы объектов JVM. – skaffman

+1

Я тоже думаю, что они происходят из http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ObjectReference.html#uniqueID%28 % 29 отладчиком Eclipse. – Redlab

Смежные вопросы