在android中,我使用散列表、稀疏数组和稀疏内部数组。在函数中,我有时使用临时对象。在函数结束之前,是否清除Map的数据是一个好习惯?谢谢
dba5bblo1#
在android中,我使用散列表、稀疏数组和稀疏内部数组。在函数中,我有时使用临时对象。在函数结束之前,是否清除Map的数据是一个好习惯?不,那没用。我想,如果你清除了它,那么你马上就能取回内存,而不是等待垃圾回收,所以这不就能让它工作吗?清除集合只会消除对集合中的项的引用,因此您仍然必须等待垃圾回收才能取回内存。
sqserrrh2#
没有。这样做是不必要的。因为散列表是函数的本地Map,所以散列表将被垃圾收集器收集,它是否为空没有区别。如果散列表没有其他引用,它的内容也将被收集。无论是在Map中还是在Map外,它都不会被更快地收集。因此,清除它只会浪费您的时间并使代码混乱。但是如果你担心内存问题,那一定是一些很大的对象,比如Bitmap,你可以调用bmp.recycle()来帮助垃圾回收。
Bitmap
bmp.recycle()
2条答案
按热度按时间dba5bblo1#
在android中,我使用散列表、稀疏数组和稀疏内部数组。在函数中,我有时使用临时对象。在函数结束之前,是否清除Map的数据是一个好习惯?
不,那没用。
我想,如果你清除了它,那么你马上就能取回内存,而不是等待垃圾回收,所以这不就能让它工作吗?
清除集合只会消除对集合中的项的引用,因此您仍然必须等待垃圾回收才能取回内存。
sqserrrh2#
没有。
这样做是不必要的。因为散列表是函数的本地Map,所以散列表将被垃圾收集器收集,它是否为空没有区别。如果散列表没有其他引用,它的内容也将被收集。无论是在Map中还是在Map外,它都不会被更快地收集。
因此,清除它只会浪费您的时间并使代码混乱。
但是如果你担心内存问题,那一定是一些很大的对象,比如
Bitmap
,你可以调用bmp.recycle()
来帮助垃圾回收。