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