垃圾收集活动

Ins*_*son 5 android garbage-collection android-activity

如果我没有弄错的话,Activity对象永远不会从内存中销毁,它们总是存在,直到进程被终止.所以调用finish()或Android操作系统来破坏你的Activity并不意味着它在内存中被破坏,而只意味着它现在处于'被破坏状态'(非官方名称).

为了演示,我确实覆盖了我的活动的finalize方法,然后从另一个活动的按钮点击事件中使用了System.gc().我看到正在调用我的活动的finalize方法.如果在进程运行时无法销毁活动对象,那么活动如何被垃圾回收?

lig*_*igi 6

如果没有更多的参照活动,则它得到垃圾收集-但渗出的活动是很容易的-那说,现在有找到活动泄漏一个很好的工具:https://github.com/square/leakcanary 也在调用onDestroy()之后,只调用了一个Activity - 而不是在finish()之后直接调用 - 因此你的测量不起作用

  • @InsignificantPerson答案说操作系统内存管理只涉及整个过程,而不是个别活动.它没有说明进程内GC的行为. (2认同)
  • @InsignificantPerson:"这里的很多人,包括Dianne Hackborn(也是Android开发团队的成员)说,活动永远不会从内存中清除,而这个过程仍在运行" - 不,她没有.你可以通过[实际阅读她所写的内容]告诉你(http://stackoverflow.com/questions/7536988/android-app-out-of-memory-issues-tried-everything-and-still-at-a-loss/7576275#7576275).由于内存条件较差,不会主动*删除活动; 除此之外,它们的行为与普通的Java对象相同. (2认同)