Я осматриваю память, пытающуюся найти возможные утечки памяти через дампы hprof.
Я нахожу, что иногда, когда я оставляю действие через кнопку "Назад" (который закончил бы действие), действие все еще останется в памяти, но это только имело бы два корня GC, которые, кажется, не очень 'сильны' все же.
Это - мой поток действия / способ, которым я нажимаю и тестирую:
A, B, C быть операциями.
1)-> B-> (назад к) A
2) сделайте дамп hprof со следующим результатом:
B находится все еще в памяти, единственные элементы в корне GC действия B:
com.myapp.android.activity.directory. B
mContext com.android.internal.policy.impl. PhoneLayoutInflater
mLayoutInflater android.app. ContextImpl [Стек, Локальный]
mOuterContext android.app. ContextImpl [Стек, Локальный]
("Основной" поток, кажется, поток UI),
продолжите от A:
3)-> C-> (назад к) A
4) сделайте дамп hprof со следующим результатом (как ожидалось):
B больше не находится в памяти, C больше не находится в памяти, только A
Теперь мой вопрос: то, куда этот PhoneLayoutInflater происходит из / почему это остается в памяти, когда я возвращаюсь от B до A, но за этим следовали бы, пошло далее на C, и возвратитесь назад к A.
Очевидно, PhoneLayoutInflater для расширения представлений, я знаю, это - цель. Я просто не вижу, почему это было бы сохранено в памяти через корень GC от основного потока UI.
Когда я проверяю корни GC перечисленных вышеупомянутых
[локальная переменная] java.lang. Поток [Поток], "основной
это имело бы следующее:
Путем я называю операции B, и C от A через постоянного клиента startActivity(intent)
Почему был бы основной поток UI действия так или иначе быть связанным и сосланным от действия B?