将在活动中完成杀死其中的所有对象

时间:2012-07-11 05:12:12

标签: android

我在Android应用程序中工作,我有一些内存问题。我在一个活动中声明了很多私有和公共静态变量。

我想知道当活动ID完成时,这些私有和公共对象是否已清除(内存),或者我们应该通过在null上将其指定为null来手动设置onDestroy()。这是正确的方法或请建议替代方案。我也在每个onDestroy()手动调用垃圾收集器。是手动调用System.gc的正确方法吗?

请帮帮我。

2 个答案:

答案 0 :(得分:1)

作为一般规则,强制垃圾收集(将其保留在系统上)是一个坏主意。如果我们忽略虚拟内存效应,当有大量垃圾回收时,垃圾收集效率最高;即当分配器用完了可立即使用的空闲内存时。如果强制垃圾收集器在任何其他时间运行,它将花费更多时间(平均)收集。

你可以调用system.gc()来隐式垃圾收集,但是因为 Java中的垃圾收集器是非确定性的。所以你不能认为它会立即释放所有你的内存。

参考。 link>> link

答案 1 :(得分:0)

  1. 每当对象没有任何引用时,您可以将其声明为null。

    1. 您可以在adb shell中使用dumpsys meminfo(pid)命令验证内存信息

    2. 如果您手动调用gc,它将无法保证垃圾收集