java - 我们应该总是释放 Java 中的 Map 或 List 吗?

标签 java garbage-collection

假设我有一张 map 。我添加了几个元素,处理了这些元素,现在我不再需要这些元素。我应该打电话Map#clear();方法还是让垃圾收集器完成它的工作?清理 map 会降低GC压力吗?

这里是一个示例代码:

    public void process() {
        Map<String, Object> myMap = new LinkedHashMap<>();
        myMap.put("CatA", "Meow1");
        myMap.put("CatB", "Meow2");

        doSomeProcessing(myMap);

        myMap.clear();
    }

P.S- 此操作每秒大约执行 10K 次。

最佳答案

您不需要在此处调用 clear,因为 GC 不会将其视为垃圾收集 myMap 的特殊信号。

相反,您应该确保当 process 完成执行时不存在对 myMap 的剩余引用。具体来说,请确保 doSomethingElse 不会泄漏 myMap 的引用。

一旦没有剩余引用,GC 就会对 myMap 进行垃圾回收。

关于java - 我们应该总是释放 Java 中的 Map 或 List 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61827048/

相关文章:

c - 在多个线程中独立运行 Boehm GC

javascript - GC 期间会删除什么类型的 cookie?

ruby - 调整 Ruby/Rails 以在内存较少的系统上工作

java - Java 中的素数 - 算法

java - 谓词泛型方法

java - Java 中特定于子类的重写

java - 如何在linux命令中编译java包

java - 正在创建多少个对象?

c# - 关于垃圾收集 C# .NET 的问题

java - 我们可以显式调用垃圾收集器吗?