#android #memory-leaks #leakcanary
#Android #утечки памяти #канал утечки
Вопрос:
Привет, я провожу анализ памяти для своего приложения. Для этого я пытаюсь определить утечку памяти моего приложения. Я получаю следующий тип утечки памяти.
com.sample.activityname has leaked:
* static WindowManagerGlobal.sDefaultWindowManager
* ↳ WindowManagerGlobal.mRoots
* ↳ ArrayList.elementData
* ↳ array Object[].[4]
* ↳ **ViewRootImpl.!(mContext)!**
* ↳ **ContextThemeWrapper.!(mBase)!**
* ↳ activityname
Что может быть вероятной причиной утечек ViewRootImpl.mContext. Я использую leakcanary для выявления моих утечек. Также я уже прошелhttps://github.com/square/leakcanary/issues/94 . Но не в состоянии получить какой-либо намек на это.
Ответ №1:
Я заметил утечки памяти в моем приложении с дампами кучи, которые выглядели точно так же, как у вас. В конечном итоге я проследил это до моего использования ProgressDialog
класса. Некоторые из моих действий отображали бы диалоговое окно выполнения с использованием, ProgressDialog.show()
но вызывались finish()
до того, как я вызывал dismiss()
показанное диалоговое окно выполнения.
Возможно, вы отображаете какой-то тип ProgressDialog, AlertDialog или диалогового окна, которое не закрывается до того, как действие будет уничтожено? Надеюсь, это поможет!