即使在完成(

时间:2016-07-18 15:29:49

标签: android android-studio

从内存监视器(窗口6:AS中的Android监视器/监视器)查看java堆转储,我注意到我的LoginActivity和LoginFragment仍在内存中,即使我在启动我的LoginActivity时调用了activity.finish()登录后活动。 LoginActivity不在后台堆栈上(后退按钮只是从我的登录后活动关闭应用程序),那么为什么activity.finish()没有从内存中清除它?

2 个答案:

答案 0 :(得分:2)

内存由垃圾收集器清理,垃圾收集器偶尔运行并查找不再使用的对象以从内存中删除。它可能是在转储时,垃圾收集器还没有运行。您可以通过点击" Garbage Truck"来强制它运行。显示器内存部分的图标。

也可能是对您的Activity的引用被保留,因此垃圾收集器不会释放它。检查你传递的任何地方"这个" (Activity)将方法作为上下文参数。尝试传递Activity.getApplicationContext(),这样就可以传递应用程序上下文(无论如何都不会被回收)。

答案 1 :(得分:0)

可能有两个原因:

  1. 仍然可以从其他对象
  2. 访问活动
  3. 垃圾收集器因无法访问而未运行