嗨,我正在为我的应用程序进行内存分析。为此,我试图确定我的应用程序的内存泄漏。我正在跟踪以下类型的内存泄漏。
com.sample.activityname has leaked:
* static WindowManagerGlobal.sDefaultWindowManager
* ↳ WindowManagerGlobal.mRoots
* ↳ ArrayList.elementData
* ↳ array Object[].[4]
* ↳ **ViewRootImpl.!(mContext)!**
* ↳ **ContextThemeWrapper.!(mBase)!**
* ↳ activityname
ViewRootImpl.mContext 泄漏的可能原因是什么?我正在使用泄漏漏斗来识别我的泄漏。另外,我已经经历过https://github.com/square/leakcanary/issues/94。但无法获得任何提示。
答案 0 :(得分:1)
我注意到我的应用程序中的内存泄漏与看起来像您的堆一样。我最终可以追溯到我对ProgressDialog
类的使用。我的一些活动会使用ProgressDialog.show()
显示进度对话框,但会在显示的进度对话框中调用finish()
之前调用dismiss()
。
也许您正在显示某种ProgressDialog,AlertDialog或Dialog,但在销毁活动之前不会将其关闭?希望这会有所帮助!