我在一个 android 应用程序中工作,我遇到了一些内存问题。我在活动中声明了很多私有和公共静态变量。
我想知道当一个活动 id 完成时,这些私有和公共对象是否被清除(内存)或者我们应该null
通过将它分配给 null in on 来手动完成它onDestroy()
。这是正确的方法还是请建议替代方法。此外,我在每个onDestroy()
. 手动调用 System.gc 是否正确?
请帮我。
我在一个 android 应用程序中工作,我遇到了一些内存问题。我在活动中声明了很多私有和公共静态变量。
我想知道当一个活动 id 完成时,这些私有和公共对象是否被清除(内存)或者我们应该null
通过将它分配给 null in on 来手动完成它onDestroy()
。这是正确的方法还是请建议替代方法。此外,我在每个onDestroy()
. 手动调用 System.gc 是否正确?
请帮我。
作为一般规则,强制垃圾收集(将其留在系统上)是一个坏主意。如果我们忽略虚拟内存的影响,当有大量垃圾需要回收时,垃圾回收的效率最高;即当分配器用完立即可用的空闲内存时。如果您强制垃圾收集器在任何其他时间运行,它将花费更多时间(平均)收集。
您可以调用 system.gc() 来隐式地进行垃圾收集,但由于Java 中的垃圾收集器是不确定的。所以你不能假设它会立即释放你所有的记忆。
参考。链接>>链接
只要对象没有任何引用,您就可以将其声明为空。
您可以在 adb shell 中使用 dumpsys meminfo (pid) 命令验证内存信息
如果您手动 cal gc 它不会为您提供垃圾收集的保证