java - 我们应该总是释放 Java 中的 Map 或 List 吗?
问题描述
假设我有一张地图。我添加了几个元素,处理了这些元素,现在我不再需要这些元素了。我应该调用Map#clear();
方法还是让垃圾收集器完成它的工作?清洁地图会降低 GC 压力吗?
这是一个示例代码:
public void process() {
Map<String, Object> myMap = new LinkedHashMap<>();
myMap.put("CatA", "Meow1");
myMap.put("CatB", "Meow2");
doSomeProcessing(myMap);
myMap.clear();
}
PS-此操作每秒将执行大约 10K 次。
解决方案
您不需要在clear
这里调用,因为 GC 不会将其视为垃圾收集的特殊信号myMap
。
相反,您应该确保在完成执行myMap
时没有剩余的引用。process
具体来说,确保doSomethingElse
不会泄露myMap
.
myMap
一旦没有剩余的引用,GC 将进行垃圾收集。
推荐阅读
- macos - process.WaitForExit() 不在 Mac OS X 中等待 - ASP.NET Core 2.2
- html - 如何更改我的代码以使其更具响应性?
- python - Selenium 异常:消息:无效参数:无法终止已退出的进程
- c# - 调用 get 操作时未设置 ViewBag 属性
- php - 如何仅从我的 public/-Nginx 的特定文件夹中索引文件?
- datatables - 使用编辑器数据表保存之前更改字段值
- c++ - 无法通过单词/或 12 个字符打印字符串
- javascript - 您可以在网格列内的下拉列表中将字符转换为大写吗?
- python - 在 FreeBSD 上使用旧 python 版本 (2.7.3) 的 SSL
- python - 发布我的博客ni的内容后,它们以html格式显示,而不是纯文本