我们应该总是在 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
。
假设我有一张地图。我添加了几个元素,处理了这些元素,现在我不再需要这些元素了。我应该调用 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
。