我已经创建了一个HashMap,其中数以百万计的键插入和删除连续发生(以同步的方式)。但是,删除操作不会删除HashMap占用的内存。由于这个原因,我的应用程序的内存越来越高,最终在某个时刻,应用程序关闭了。
谁能建议在删除HashMap中的密钥后,恢复内存的方法是什么?
插入:
map.put(txnId, new Timestamp(new Date().getTime()));删除:
Set<String> removalSet = new HashSet<String>();
removalSet.add(entry.getKey());
map.keySet().removeAll(removalSet);发布于 2020-05-21 17:07:25
删除元素后,将HashMap的引用设置为null,这将使该对象符合GC的条件。System.gc()行为是不能保证的,应该避免。
解决方案是:在这种情况下使用WeakHashMap类。如果密钥不再是有效的refer,对象将被自动移除。
https://stackoverflow.com/questions/61929041
复制相似问题