Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在onPause()方法中调用GC是否是一种好的做法?_Android_Android Memory - Fatal编程技术网

Android 在onPause()方法中调用GC是否是一种好的做法?

Android 在onPause()方法中调用GC是否是一种好的做法?,android,android-memory,Android,Android Memory,显式调用GC对系统内存有影响吗 我在活动中使用了许多数据结构,如Arraylist和HashMap。每次用户加载活动时,都需要从web服务重新填充更新的数据。这意味着当用户离开活动并再次返回时,这些数据结构应该出现在内存中 当一个用户离开活动并且不再访问它时,我不希望这些数据结构占用任何内存 那么,可以通过在活动的onPause()中调用GC来执行吗?这样做是一种好的做法吗?如果要执行这些操作,有哪些选项?您应该首先调用clear(清除)所有数据结构并将其设置为null。 调用GC可能会降低设备

显式调用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将如何降低设备性能。您能详细说明吗?请继续说明