我在Android应用程序中工作,我有一些内存问题。我在一个活动中声明了很多私有和公共静态变量。
我想知道当活动ID完成时,这些私有和公共对象是否已清除(内存),或者我们应该通过在null
上将其指定为null来手动设置onDestroy()
。这是正确的方法或请建议替代方案。我也在每个onDestroy()
手动调用垃圾收集器。是手动调用System.gc的正确方法吗?
请帮帮我。
答案 0 :(得分:1)
作为一般规则,强制垃圾收集(将其保留在系统上)是一个坏主意。如果我们忽略虚拟内存效应,当有大量垃圾回收时,垃圾收集效率最高;即当分配器用完了可立即使用的空闲内存时。如果强制垃圾收集器在任何其他时间运行,它将花费更多时间(平均)收集。
你可以调用system.gc()来隐式垃圾收集,但是因为 Java中的垃圾收集器是非确定性的。所以你不能认为它会立即释放所有你的内存。
参考。 link>> link
答案 1 :(得分:0)
每当对象没有任何引用时,您可以将其声明为null。
您可以在adb shell中使用dumpsys meminfo(pid)命令验证内存信息
如果您手动调用gc,它将无法保证垃圾收集