调用GC是否明确影响系统内存?
我在我的活动中使用了许多数据结构,例如Arraylist
和HashMap
。每次用户加载活动时都需要从Web服务重新填充更新的数据。这意味着当用户离开活动并再次返回时,这些数据结构应该存在于内存中。
当用户离开活动并且没有再次访问它时,我不希望这些数据结构占用任何内存。
那么可以通过在活动的onPause()
中调用GC来执行此操作吗?这样做是一种好习惯吗?如果我想做这些事情有什么选择?
答案 0 :(得分:1)
首先, System.gc()只是一个请求。无法保证系统将运行垃圾收集器。
接下来,来讨论你的问题。如果您确定将退出活动并重新创建数据更新,则最好将当前活动中的所有数据结构分配给 NULL 。
您可以在onDestroy()方法中执行此操作。这将确保释放所有DS对象,并且系统在运行gc()时将考虑垃圾收集。
希望这有帮助。
答案 1 :(得分:0)
您应首先调用清除所有数据结构并将其设置为null。 调用GC可能会降低设备性能及其对垃圾收集器的请求,但不确定GC是否会被执行。
所以,而不是自己调用GC只清除所有DS并将它们设置为null。