随着时间的推移,我的 android 应用程序占用了越来越多的内存。我进行了堆转储并使用 MAT 对其进行了分析。
因此,在我退出应用程序(使用后退按钮)之后,我的一项活动似乎没有从内存中清除,然后当我重新启动应用程序时,会创建一个新实例并填充内存。
现在,如果它们是 PhantomReferences,为什么一段时间后或当我退出应用程序时内存没有被清除?即使我使用其他应用程序等,内存也永远不会清除。完全关闭应用程序的唯一方法是使用任务管理器手动终止应用程序。
我能做些什么来避免这种无政府状态的内存消耗?
编辑:
我发现了问题!每个活动都使用 Thread.setDefaultUncaughtExceptionHandler() 设置 CustomExceptionHandler,并且 CustomExceptionHandler 保持对上下文的引用。所以我摆脱了上下文引用,并在 onDestroy() 方法中“取消”了 DefaultUncaughtExceptionHandler。现在真的好多了!