0

显式调用 GC 是否会对系统内存产生影响?

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

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

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

4

2 回答 2

1

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

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

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

希望这可以帮助。

于 2013-02-07T07:35:18.107 回答
0

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

因此,与其自己调用 GC,不如清除所有 DS 并将它们设置为空。

于 2013-02-07T07:27:11.960 回答