假设我有一张 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/