在onPause()方法中调用GC是一种好习惯吗?

时间:2013-02-07 07:21:04

标签: android android-memory

调用GC是否明确影响系统内存?

我在我的活动中使用了许多数据结构,例如ArraylistHashMap。每次用户加载活动时都需要从Web服务重新填充更新的数据。这意味着当用户离开活动并再次返回时,这些数据结构应该存在于内存中。

当用户离开活动并且没有再次访问它时,我不希望这些数据结构占用任何内存。

那么可以通过在活动的onPause()中调用GC来执行此操作吗?这样做是一种好习惯吗?如果我想做这些事情有什么选择?

2 个答案:

答案 0 :(得分:1)

首先, System.gc()只是一个请求。无法保证系统将运行垃圾收集器。

接下来,来讨论你的问题。如果您确定将退出活动并重新创建数据更新,则最好将当前活动中的所有数据结构分配给 NULL

您可以在onDestroy()方法中执行此操作。这将确保释放所有DS对象,并且系统在运行gc()时将考虑垃圾收集。

希望这有帮助。

答案 1 :(得分:0)

您应首先调用清除所有数据结构并将其设置为null。 调用GC可能会降低设备性能及其对垃圾收集器的请求,但不确定GC是否会被执行。

所以,而不是自己调用GC只清除所有DS并将它们设置为null。