Что такое показатель «общее количество» в профилировщике памяти Android Studio? - PullRequest
0 голосов
/ 15 января 2019

Я не могу найти описание этого показателя нигде в документации для разработчиков Android. Вот ссылка на то, на что я недавно смотрел: https://developer.android.com/studio/profile/memory-profiler

Вот что я думаю : количество объектов в куче, которые не были освобождены.

Пожалуйста, если возможно, предоставьте заслуживающий доверия ресурс, который поддерживает ваши рассуждения (например, выступление Google I / 0 на Youtube с пометкой в ​​минуту или документация для Android).

РЕДАКТИРОВАТЬ: Вот скриншот, который включает метрику. enter image description here

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Да, это общее количество экземпляров, которое было выделено до выбранного периода + выделение памяти для выбранного периода (или, как вы сказали: количество объектов (экземпляров) в куче, которые не были освобождены для выбранного период)

Вы можете увидеть это здесь

На Экземпляре видно, что три int массива были выделены на 1 м, но не освобождены (на выбранный период).

0 голосов
/ 29 января 2019

Столбец общего количества

Total Count определяется как общее количество объектов (см. Источник Android Studio ), в частности:

  new AttributeColumn<>(
    "Total Count",
    () -> new SimpleColumnRenderer<ClassifierSet>(
      value -> Integer.toString(value.getAdapter().getTotalObjectCount()),
      value -> null,
      SwingConstants.RIGHT),

Этот getTotalObjectCount() определяется как :

  public int getTotalObjectCount() {
    return mySnapshotObjectCount + myDeltaAllocations - myDeltaDeallocations;
  }

Методы приращения

Значение mySnapshotObjectCount увеличивается внутри addSnapshotInstanceObject, которое содержит полезный комментарий:

Добавить экземпляр к базовому снимку и обновить учет «итоговые» значения.

Значения myDeltaAllocations и myDeltaDeallocations увеличиваются внутри addDeltaInstanceInformation:

if (isAllocation) {
  myDeltaAllocations++;
}
else {
  myDeltaDeallocations++;
}

Это называется внутри partition, в котором содержится полезный комментарий:

Разделы InstanceObjects в snapshotInstances и myDeltaInstances в соответствии с текущей стратегией ClassifierSet. Это будет потреблять экземпляры из ввода.

Это snapshotInstance - это то же самое, что используется для увеличения mySnapshotInstanceObjectCount, показывая, что все 3 значения очень тесно связаны, создаются при создании раздела (снимка) и учитывают все факторы в общем количестве.


Конечная формула

Итак, окончательный ответ:

Total Count = Snapshot objects + New allocations - New deallocations
  • Объекты моментальных снимков = количество экземпляров объектов, выделенных перед моментальным снимком.
  • Новые выделения = количество выделений во время снимка.
  • Новые освобождения = количество освобождений во время снимка.

Это определение уравнения соответствует тому, что Axifive указал в другом ответе, и связанному видео.

0 голосов
/ 23 января 2019

Вот что я думаю: количество объектов в куче, которые имеют не было освобождено.

Вы правы в своем мышлении, но я не могу служить вам публичной веткой для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...