Что представляют собой цвета элементов дерева ссылок HP Studio для Android Studio?
Может ли кто-нибудь сказать мне, что означает полужирный, синий и красный позиции в HPROF Viewer в Android Studio?
Я спрашиваю об одной в панели "Дерево ссылок".
![Полужирный]()
![Синий элемент]()
![Красный элемент]()
С уважением.
Ответы
Ответ 1
Я не могу найти документацию по этому поводу, но, просмотрев несколько кучи кучи, они выглядят так:
-
blue
- ближайший dominator экземпляр, выбранный в верхней правой панели.
-
bold
- корень GC, например экземпляр с глубиной 0, который не следует собирать. В этом ответе содержится дополнительная информация о том, что такое корень GC, а этот ответ перечисляет типы вещей, которые корни.
-
red
- Я на самом деле не видел их, но я бы предположил, что это указывает на экземпляр, который должен быть собран мусором, но еще не был.
Опять же, отказ от ответственности заключается в том, что все это может быть неправильным, и я не могу найти какую-либо официальную информацию об этом, но, похоже, это совпадает с моими наблюдениями при использовании профилировщика кучи.
Ответ 2
-
this$0
(красный) - это переменная, которая содержит ссылку на LeakActivity
. В вашем случае это неявная ссылка на охватывающий класс. Это характер анонимных внутренних классов в Java - они неявно содержат ссылку на внешний (охватывающий) класс.
-
имя синего класса - это просто переменная this$0
.
Таким образом, практически то, что вы видите, - это LeakActivity
, которое неявно ссылается на LeakAsyncTask
, которое реализовано как анонимный внутренний класс внутри LeakActivity
, поэтому LeakActivity
не может быть собрано мусором до тех пор, пока LeakAsyncTask
не будет закончен. Таким образом, у вас есть потенциальная утечка активности, которая действительно опасна для вашего приложения.