Что означают числа в окне отладчика Android Studio?

Что означают числа в окне отладчика Android Studio?

Что означают выделенные числа, например, 4580, 4581 и т. д.? Это не PID, это было проверено командой ps в оболочке adb.

5
0
339
2

Ответы 2

Этот номер является Регистрационный номер регистра, в котором хранится ссылка на объект.

Что такое регистрационный номер?

Что-то совершенно бесполезное с точки зрения разработчика приложений! Я уверен, что вы знаете о виртуальной машине Dalvik, на которой запускаются приложения для Android. Итак, кадры в байтовом коде Dalvik состоят из регистров. И в этих регистрах хранятся ссылки на объекты. Проверьте эту ссылку, чтобы узнать более. Не уверен, почему студия Android показывает их в отладчике. Я не вижу в этом никакой пользы.

Спасибо, можете ли вы предоставить больше ссылок?

pkz 28.09.2018 03:26

Это единственное, что мне удалось найти ... Покопайся в поиске в гугле и возможно найдешь что-нибудь

nupadhyaya 28.09.2018 04:13

Суммируя: номер не обязательно может быть номером регистра, это может быть идентификатор из ObjectReferenceImpl, который является реализацией интерфейса ObjectReference из интерфейса отладки Java (JDI).

В длину: Из анализа базы кода Idea Community было обнаружено, что класс ThreadDescriptorImpl.java (ThreadDescriptorImpl) отвечает за предоставление описания потока, отображаемого в окне отладки (см. Изображение выше, представленное с вопросом). Идентификатор упоминается как thread.uniqueID(). Поток здесь относится к типу ThreadReferenceProxyImpl, который расширяет ObjectReferenceProxyImpl, где реализован метод уникальный идентификатор. Этот метод, в свою очередь, возвращает уникальный идентификатор объекта типа ObjectReference. При беглом поиске определение ObjectReference, удовлетворяющее критериям, не было найдено в кодовой базе Idea. Позже было обнаружено, что он скрыт в определении интерфейса JDI. Из jar-файла реализации JDI, найденного в настройке Idea, было обнаружено, что ObjectReferenceImpl обеспечивает окончательную реализацию метода uniqueID. Фрагмент кода приведен ниже -

  private long myID;

  private static synchronized long nextID()
  {
    return nextID++;
  }

  ObjectReferenceImpl(VirtualMachine aVm, Oop oRef)
  {
    super(aVm);
    this.saObject = oRef;
    this.myID = nextID();
  }

  public long uniqueID()
  {
    return this.myID;
  }

Однако, говоря это и отвечая на вопрос, были использованы такие слова, как «вероятно» и «может быть», потому что ссылки на реализации ObjectReference не были найдены сразу в исходном коде редакции Idea Community. И выводы были из реализаций jar. Если в будущем кто-то, изучающий этот вопрос и ответ, предоставит прямые ссылки, ответ может быть изменен, чтобы отразить определенность.

Другие вопросы по теме