Android 在onPause()方法中调用GC是否是一种好的做法?
显式调用GC对系统内存有影响吗 我在活动中使用了许多数据结构,如Android 在onPause()方法中调用GC是否是一种好的做法?,android,android-memory,Android,Android Memory,显式调用GC对系统内存有影响吗 我在活动中使用了许多数据结构,如Arraylist和HashMap。每次用户加载活动时,都需要从web服务重新填充更新的数据。这意味着当用户离开活动并再次返回时,这些数据结构应该出现在内存中 当一个用户离开活动并且不再访问它时,我不希望这些数据结构占用任何内存 那么,可以通过在活动的onPause()中调用GC来执行吗?这样做是一种好的做法吗?如果要执行这些操作,有哪些选项?您应该首先调用clear(清除)所有数据结构并将其设置为null。 调用GC可能会降低设备
Arraylist
和HashMap
。每次用户加载活动时,都需要从web服务重新填充更新的数据。这意味着当用户离开活动并再次返回时,这些数据结构应该出现在内存中
当一个用户离开活动并且不再访问它时,我不希望这些数据结构占用任何内存
那么,可以通过在活动的
onPause()
中调用GC来执行吗?这样做是一种好的做法吗?如果要执行这些操作,有哪些选项?您应该首先调用clear(清除)所有数据结构并将其设置为null。
调用GC可能会降低设备性能,并且它是对垃圾收集器的一个请求,因此不确定是否会执行GC
因此,与其自己调用GC,不如清除所有DS并将其设置为null。首先,System.GC()只是一个请求。无法保证系统将运行垃圾收集器
接下来,来谈谈你的问题。如果您确定活动将退出并重新创建以进行数据更新,则最好将当前活动中的所有数据结构指定为NULL
这可以在onDestroy()方法中完成。这将确保所有DS对象都被释放,系统在运行gc-().< /p>时将考虑垃圾回收。
希望这有帮助。不,这不是一个好的做法,您正在强制vm进行垃圾收集。让vm完成它的工作。同意你的回答,但我想要的是,活动中占用的内存应该在我离开时立即回收。在我的应用程序的其他部分,实际上需要内存,但正如你所说,没有任何限制,系统将在我离开活动时回收它。简言之,我想调用垃圾收集器来调用仅适用于某些活动。您对此有何想法?另一件事是,如果您为任何对象分配null引用,它会占用内存,因为null是空引用。如果您运行64位机器,它会占用8字节内存。因此,将null分配给所有对象是否真的很好。当系统意识到内存不足。因此,大多数情况下,您不必担心内存问题。您所需要关注的是,在完成DS对象后释放它们。此外,将所有“不再需要”对象设置为NULL是编程中的一个更好的实践。gc将如何降低设备性能。您能详细说明吗?请继续说明