我们应该总是在 Java 中释放 Map 或 List 吗?

Should we always free up Map or List in Java?

假设我有一张地图。我添加了几个元素,处理了这些元素,现在我不再需要这些元素了。我应该调用 Map#clear(); 方法还是让垃圾收集器完成它的工作?清理地图是否会降低 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