java - 调用 hashSet.clear() 后创建一个新的 HashSet 还是重用更好

标签 java memory jvm hashset

我想在 HashSet 中处理一些新数据,而不需要任何旧数据或旧 HashSet 对象。旧的 HashSet 对象不在其他地方引用。

简单地做hashset = new HashSet<String>()更好吗?让 JVM 释放旧 HashSet 对象的内存,或者我应该调用 hashSet.clear()并重复使用相同的 HashSet?

根据openJDK,hashSet.clear()是:

public void clear() {
    map.clear();
}

和 map.clear() :

public void clear() {
     modCount++;
     Entry[] tab = table;
     for (int i = 0; i < tab.length; i++)
         tab[i] = null;
     size = 0;
 }

由于map.clear()会迭代所有的entry,hashSet很大的时候会不会很耗时?这种情况下推荐使用哪一种,构造方法还是clear()方法?

最佳答案

简单的不再引用你的HashSet,让垃圾收集器来做吧。

在解除引用之前清除 HashSet 不会更快地释放内存。

关于java - 调用 hashSet.clear() 后创建一个新的 HashSet 还是重用更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18509734/

相关文章:

java - 尽管使用了正确的 Java 版本,但仍不受支持的主要版本和次要版本

java - Spring - 如何以编程方式引用 bean

java - 如何检测 Mac OsX 10.7 上是否下载了 JavaVM

java - 如何忽略 SSL 证书 Java

java - 空循环比java中的非空循环消耗更多的内存

java - java数组是如何真正工作的

java - 使用 Apache Poi 从固定位置的模板复制表

c++ - 在并行 C++ 中建立内存

memory - perl6 如何为 MoarVM 提供更多内存?

memory - NodeJS 0.3.1 应用程序泄漏内存