首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >remove()或removeAll()方法未清除HashMap中的应用程序内存

remove()或removeAll()方法未清除HashMap中的应用程序内存
EN

Stack Overflow用户
提问于 2020-05-21 15:02:44
回答 1查看 120关注 0票数 0

我已经创建了一个HashMap,其中数以百万计的键插入和删除连续发生(以同步的方式)。但是,删除操作不会删除HashMap占用的内存。由于这个原因,我的应用程序的内存越来越高,最终在某个时刻,应用程序关闭了。

谁能建议在删除HashMap中的密钥后,恢复内存的方法是什么?

插入:

代码语言:javascript
复制
map.put(txnId, new Timestamp(new Date().getTime()));

删除:

代码语言:javascript
复制
Set<String> removalSet = new HashSet<String>();
removalSet.add(entry.getKey());

map.keySet().removeAll(removalSet);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-21 17:07:25

删除元素后,将HashMap的引用设置为null,这将使该对象符合GC的条件。System.gc()行为是不能保证的,应该避免。

解决方案是:在这种情况下使用WeakHashMap类。如果密钥不再是有效的refer,对象将被自动移除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61929041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档