2

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

我想知道当一个活动 id 完成时,这些私有和公共对象是否被清除(内存)或者我们应该null通过将它分配给 null in on 来手动完成它onDestroy()。这是正确的方法还是请建议替代方法。此外,我在每个onDestroy(). 手动调用 System.gc 是否正确?

请帮我。

4

2 回答 2

1

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

您可以调用 system.gc() 来隐式地进行垃圾收集,但由于Java 中的垃圾收集器是不确定的。所以你不能假设它会立即释放你所有的记忆。

参考。链接>>链接

于 2012-07-11T05:19:29.417 回答
0
  1. 只要对象没有任何引用,您就可以将其声明为空。

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

    2. 如果您手动 cal gc 它不会为您提供垃圾收集的保证

于 2012-07-11T05:19:14.213 回答