HashMap.clear()
或 ArrayList.clear()
是释放内存来缩小大小还是保持不变?
如何使 arraylist 或 hashmap 引用null
以允许 gc。
最佳答案
如果您clear()
您的Map
或Collection
,那么垃圾收集器可以收集其中包含的对象,只要因为它们没有在其他地方被引用。与删除对 Map
或 Collection
本身的所有引用相同(通过将其设置为 null
无处不在):只要 Map
,例如,是唯一“知道”这些引用的对象,删除对 Map
本身的所有引用将允许垃圾收集器收集 Map
,因此也其中包含的对象(当然,只要它们没有在其他地方被引用)。
但是仅仅清除 Map 并不能保证垃圾收集器会真正运行——它只是可以从内存中清除这些对象,如果它运行的话。但通常你不应该为此担心。因此,您很可能不会注意到调用 clear()
会直接和立即获得内存,而只是因为垃圾收集器并非一直运行。
关于java - 如何在java中引用hashmap/arraylist null来释放所有内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31724480/